2013-03-23 4 views
1
//View 

    echo $this->Form->input('adult', array('options' => array('0'=>'0', '1'=>'1', '2'=>'2', '3'=>'3', '4'=>'4'), 'default' => '0')); 
    echo $this->Form->input('concession', array('options' => array('0'=>'0', '1'=>'1', '2'=>'2', '3'=>'3', '4'=>'4'), 'default' => '0')); 

    //Model 

    ... 

Проблема, которую я имею, что я знаю, как код валидаций для отдельных полей, НО здесь я хочу, чтобы сравнить «взрослый» и поля «концессии» вместе и выдаст ошибку, если SUM из них меньше, чем «1».Валидация данных в CakePHP 2 Поля ввода

Любой совет здесь был бы замечательным.

Благодаря

ответ

4

Вы можете создать правило проверки пользовательского на вашей модели, что-то вроде этого;

function atLeastOneSelected($data) 
{ 
    if (empty($this->data[$this->alias]['adult']) && empty($this->data[$this->alias]['concession'])) { 
     // both fields are empty 
     return false; 
    } 
    return true; 
} 

и в вашем массиве проверки;

public $validate = array(
    'adult' => 'atLeastOneSelected', 
    'concession' => 'atLeastOneSelected', 
); 
+0

спасибо, что так много работает !!! :) – blairmeister

+0

им учиться гораздо больше все время :) – blairmeister

+0

Рад, что я мог помочь! Возможно, вам нужно будет проверить, работает ли мой пример во всех ситуациях (например, при сохранении других полей в вашей модели без обновления этих полей), но на основе этого примера я думаю, что вы сможете создать правильное правило проверки – thaJeztah

Смежные вопросы