2015-02-11 8 views
0

Я создал форму с помощью Помощника формы, и одно из полей - это выбор для значений (например) A и B.CakePHP Howto разрешить изменение значения от A до B, но не наоборот (от B до A)

При добавлении записи доступны обе опции A и B. Вы также можете отредактировать запись позже: я хочу разрешить переход от A к B, но не для перехода от B к A!

Как я могу сделать это безопасно & красиво?

Примечание:

  1. У меня есть 'правило' => массив ('inList', массив ('A', 'B')) в модели
  2. Я дон «т требуется решение, которое может быть изменено от„Inspect элемента“modifitation на переднем конце или иного образом сообщения действия

Спасибо заранее!

ответ

2

Write a custom validation rule с логикой для проверки и применения его on edit only.

public $validate = array(
    'yourField' => array(
     'on' => 'update', 
     'rule' => array('checkAandB'), 
     'message' => 'You cant go back to A' 
    ) 
); 

public function checkAandB($check) { /* your check logic here*/ } 
+0

Очень полезное направление, которое вы указали мне, спасибо! Однако я не могу найти правильный способ получить данные запроса в этой публичной функции checkAandB (noob issue). У меня есть 'if ($ this-> data ['Group'] ['field'] == 'B' && $ this-> validate ['field'] == 'B') {$ pass = false', но это не работает. Любая подсказка? Еще раз спасибо! –

+0

Я имею в виду, как мне получить введенное значение из формы в этой функции, я пробовал множество опций, таких как $ this-> validate ['field'] и $ this-> request-> data ['field'] и $ this-> request-> data ['Group'] ['field'] ... –

+0

Вы не проверяете этот метод с данными поля для вас, это метод обратного вызова ('' rule '=> array ('checkAandB') '), дважды проверьте документацию, это объясняет это. – burzum

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