Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
TyurinP
цитировать
Зарегистрирован: 20 Окт 2008 13:36:01 Сообщения: 11 Откуда: Kiev
|
Добавлено: 20 Окт 2008 13:57:38 Заголовок сообщения: Редактирование М, когда часть необходимых полей отсутствует? |
|
|
Добрый день!
Недавно осваиваю cakePHP, система нравиться но возникаю вопросы, может те, у кого опыт побольше подскажут.
cakephp 1.2
имеем модель User c такой валидацией
Код: | var $validate = array(
'username' => array(
'username1' => array(
'rule' => array('custom', '/[a-zA-Z0-9_]/'),
'required' => true,
'message' => 'Username cannot be empty'
),
'username2' => array(
'rule' => 'isUnique',
'message' => 'This username has already been taken.'
)
),
'email' => array(
'rule' => 'email',
'required' => true,
'message' => 'Please enter a valid email'
),
'password' => array(
'passwordSimilar' => array(
'rule' => 'checkPasswords',
'message' => 'Different password re entered.'
)
),
'password2' => array(
'long' => array(
'rule' => array('between', 5, 15),
'message' => 'Passwords must be between 5 and 15 characters long.'
)
)
); |
т.е. необходимые поля username и email
допусти я делаю функцию смены пароля и поля email у меня в форме нет. При попытке Код: | $this->User->save($this->data); | мне выдается ошибка, что мол нет значения email, удовлетворяющего условиям. Пока что вывожу email в скрытом поле, но это же неверный подход. Как избежать проверки отсутствующих в форме полей?
Спасибо |
|
Вернуться к началу |
|
 |
michas
цитировать
Зарегистрирован: 28 Янв 2008 11:28:31 Сообщения: 123
|
Добавлено: 20 Окт 2008 15:30:47 Заголовок сообщения: |
|
|
Код: |
var $validate = array(
'fieldName1' => array(
'rule' => 'ruleName', // or: array('ruleName', 'param1', 'param2' ...)
'required' => true,
'allowEmpty' => false,
'on' => 'create', // or: 'update'
'message' => 'Your Error Message'));
|
Цитата: |
The вЂon’ key can be set to either one of the following values: вЂupdate’ or вЂcreate’. This provides a mechanism that allows a certain rule to be applied either during the creation of a new record, or during update of a record.
If a rule has defined вЂon’ => вЂcreate’, the rule will only be enforced during the creation of a new record. Likewise, if it is defined as вЂon’ => вЂupdate’, it will only be enforced during the updating of a record.
The default value for вЂon’ is null. When вЂon’ is null, the rule will be enforced during both creation and update.
|
|
|
Вернуться к началу |
|
 |
TyurinP
цитировать
Зарегистрирован: 20 Окт 2008 13:36:01 Сообщения: 11 Откуда: Kiev
|
Добавлено: 20 Окт 2008 15:51:06 Заголовок сообщения: |
|
|
Спасибо michas
но вот вопрос, если я поставлю для email 'on' => 'create'
то например при редактировании профиля, пользователь сможет удалить свой указанный при регистрации email и никаких сообщений об ошибках не получит? |
|
Вернуться к началу |
|
 |
michas
цитировать
Зарегистрирован: 28 Янв 2008 11:28:31 Сообщения: 123
|
Добавлено: 20 Окт 2008 16:44:22 Заголовок сообщения: |
|
|
ну задавайте тогда правила валидации из контроллера. для каждого экшина - свой _________________ Все самое интересное в реальном времени - xmpp:cakephp@conference.jabber.ru |
|
Вернуться к началу |
|
 |
TyurinP
цитировать
Зарегистрирован: 20 Окт 2008 13:36:01 Сообщения: 11 Откуда: Kiev
|
Добавлено: 20 Окт 2008 17:01:58 Заголовок сообщения: |
|
|
michas писал(а): | ну задавайте тогда правила валидации из контроллера. для каждого экшина - свой |
да конечно! это вариант, но я думал, что есть еще какой-то выход из такой ситуации |
|
Вернуться к началу |
|
 |
michas
цитировать
Зарегистрирован: 28 Янв 2008 11:28:31 Сообщения: 123
|
Добавлено: 20 Окт 2008 18:18:28 Заголовок сообщения: |
|
|
думаю врятли есть другой вариант в вашем случае _________________ Все самое интересное в реальном времени - xmpp:cakephp@conference.jabber.ru |
|
Вернуться к началу |
|
 |
michas
цитировать
Зарегистрирован: 28 Янв 2008 11:28:31 Сообщения: 123
|
Добавлено: 21 Окт 2008 10:24:02 Заголовок сообщения: |
|
|
почитал мануал, при составлении правила для валидации поля есть параметр 'required' если параметр установлен в положение "true', тогда оно обязательно валидируется если 'false' то валидация должна просиходить только в том случае когда поле присутствует в массиве data. попробуйте так сделать _________________ Все самое интересное в реальном времени - xmpp:cakephp@conference.jabber.ru |
|
Вернуться к началу |
|
 |
TyurinP
цитировать
Зарегистрирован: 20 Окт 2008 13:36:01 Сообщения: 11 Откуда: Kiev
|
Добавлено: 21 Окт 2008 15:19:14 Заголовок сообщения: |
|
|
О! большое спасибо, попробую это имеено то, что надо |
|
Вернуться к началу |
|
 |
DeeperMD
цитировать
Зарегистрирован: 08 Фев 2008 15:04:11 Сообщения: 144 Откуда: $Молдова->Кишинёв->Буюканы()
|
Добавлено: 28 Окт 2008 21:35:42 Заголовок сообщения: |
|
|
А еслли пойти от другого... просто сделать unset тем свойствам модели которые не нужны в даный момент. |
|
Вернуться к началу |
|
 |
TyurinP
цитировать
Зарегистрирован: 20 Окт 2008 13:36:01 Сообщения: 11 Откуда: Kiev
|
Добавлено: 29 Окт 2008 16:30:13 Заголовок сообщения: |
|
|
DeeperMD писал(а): | А еслли пойти от другого... просто сделать unset тем свойствам модели которые не нужны в даный момент. |
Похоже на то, что этот вариант мне подходит даже больше.
Спасибо!!!
т.е. я могу написать
Код: |
unset($this->User->validate['email']);
|
чтоб отменить валидацию email для User ??? |
|
Вернуться к началу |
|
 |
DeeperMD
цитировать
Зарегистрирован: 08 Фев 2008 15:04:11 Сообщения: 144 Откуда: $Молдова->Кишинёв->Буюканы()
|
Добавлено: 29 Окт 2008 22:50:43 Заголовок сообщения: |
|
|
я не пробовал но в принципе должно прокатить.. это же обычное свойство обычного класса.. |
|
Вернуться к началу |
|
 |
|
|