tags:

views:

1916

answers:

2

I've got a model in CakePHP that doesn't have a table, called Upload. I've got a validation in this Model for a field called source_id.

I've got a form that builds a nice looking $this-data, giving me a well formated set, including:

$this->data['Upload']['source_id']

However, the validation rule I have set doesn't seem to run at all. I copied this validation rule from another model where it does work, so I'm confident that it works:

var $validate = array(
     'source_id' => array(
  rule' => 'numeric',
  'required' => true,
  'allowEmpty' => false,
  'message' => 'Error!.'
 )
);

Can you not validate fields for a model that lacks a database table?

The form uses the Upload model, and submits to another controller action method.

CakePHP 1.2, PHP/MySQL 5, XAMPP.

+4  A: 

I'm dumb. You have to trigger a validation check, either with a save() or

$this->Upload->set($this->data);
$this->Upload->validates();

Working now.

Justin
A: 

You can also fake the database structure by setting the $_schema array, like so:

var $useTable = false;

var $_schema = array(
    'name'   =>array('type'=>'string', 'length'=>100), 
    'email' =>array('type'=>'string', 'length'=>255), 
    'phone' =>array('type'=>'string', 'length'=>20),
    'subject'  =>array('type'=>'string', 'length'=>255),
    'message'  =>array('type'=>'text')
);
Chris Hawes