My question is similar to: cakePHP - form - if checkbox is selected show and validate another field.
I have a set of fields in a form:
/* view */
echo $this->Form->input('immagine', array('type' => 'checkbox'));
echo $this->Form->input('url');
and the model, with the validation rules:
/* model */
class Question extends AppModel {
public $validate = array(
'url' => array(
'required_if_checked'=>array(
'rule'=>array('requiredIfChecked', 'immagine'),
'message'=>'cannot be blank if foo is checked',
)
)
);
public function requiredIfChecked($check, $associatedField) {
$value = array_pop($check);
if ($this->data[$this->alias][$associatedField] && empty($value)) {
return false;
}
else {
return true;
}
}
}
On the page, the url field is marked as required either the checkbox is ticked or not.
I've tried adding
'required' => false,
'allowEmpty' => true
in the model, but that just does what it says, ignoring the validation rules.
I want the 'url' field to be validated ONLY if the 'immagine' checkbox is ticked.
Thank you all for help.