Reputation: 2115
I just downloaded a fresh copy of cakephp version 2.3.0 and I am trying to validate a select field of a form that I have just created:
echo $this->Form->input('province_id', array('empty' => '- select -', 'options' => $options));
echo $this->Form->input('username');
And the validation:
public $validate = array(
'username' => array(
'required' => array(
'rule' => array('notEmpty'),
'message' => 'A username is required'
)
),
'province_id' => array(
'rule' => 'notEmpty',
'message' => 'Select something'
)
);
The username field is being validated correctly, but the province_id is being ignored. What can it be?
Upvotes: 1
Views: 3612
Reputation: 5887
It looks like your form helper declarations are fine.
My experience with Cake shows that the validation is screwy when you start to mix the syntax (one of your fields has a nested array, while the other doesn't). I am sure there is some rhyme or reason to what is going on, but I haven't really dived that deep and usually just do trial and error.
Try this:
public $validate = array(
'username' => array(
'rule' => 'notEmpty',
'required' => true,
'message' => 'A username is required'
),
'province_id' => array(
'rule' => 'notEmpty',
'required' => true,
'message' => 'Select something'
)
);
Upvotes: 1
Reputation: 2252
Better late then never, try this:
public $validate = array(
'username' => array(
'required' => array(
'rule' => array('notEmpty'),
'message' => 'A username is required'
)
),
'province_id' => array(
'required' => array(
'rule' => array('myOwnValidationRule'),
'message' => 'Select something'
)
)
);
function myOwnValidationRule($data)
{
if($data["province_id"] != 'empty')
{
return true;
}
}
Upvotes: 0
Reputation: 3807
You should write like this:
public $validate = array(
'username' => array(
'required' => array(
'rule' => array('notEmpty'),
'message' => 'A username is required'
)
),
'province_id' => array(
'required' => array(
'rule' => array('notEmpty'),
'message' => 'Select something'
)
)
);
Upvotes: 2