Проверка пользовательской формы в CakePHP - PullRequest
2 голосов
/ 15 июля 2009

Это моя форма: я хочу убедиться, что по крайней мере одна из пар имя / адрес электронной почты заполнена, поэтому я работаю над пользовательским правилом проверки в моей модели.

альтернативный текст http://files.getdropbox.com/u/240752/formfields.png

Первоначально я думал, что это будет простой случай, когда пара имя / адрес электронной почты будет обязательной, но это не распространяется на другие поля, если кто-то, например, заполняет третье, и пропускает электронное письмо.

Кроме того, мне нужно проверять действительный адрес электронной почты только в том случае, если заполнено соответствующее поле друга.

Я обдумываю это? Я думаю, что мне нужно какое-то взаимодействие между правилами, но я застрял.

Ответы [ 3 ]

1 голос
/ 15 июля 2009

Я бы написал для этого специальный метод проверки: http://book.cakephp.org/view/150/Custom-Validation-Rules#Adding-your-own-Validation-Methods-152

0 голосов
/ 16 июля 2009

Как генерируются ваши поля? Я предполагаю, что вы используете что-то вроде:

<?php echo $form->input('Friend.name'); ?> [html stuff] <?php echo $form->input('Friend.email'); ?>

Поскольку при выполнении этого несколько раз на странице будут создаваться повторяющиеся идентификаторы (например, "FriendName" будет результирующим идентификатором для каждого поля, генерируемого <?php echo $form->input('Friend.name'); ?>), вам, вероятно, придется добавить число к каждое имя поля, когда вы их генерируете, а затем зацикливайтесь на $this->data['Friend'] в вашем контроллере и аннулируете поля-нарушители, когда вы их находите (если имя присутствует, но адрес электронной почты отсутствует, как вы говорите).

Я не думаю, что есть торт, чтобы справиться с подобной ситуацией, но я ошибался раньше!

0 голосов
/ 15 июля 2009

Поместите вашу логику проверки в обратный вызов beforeValidate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...