Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Редактирование М, когда часть необходимых полей отсутствует?

 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
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.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора  
ICQ Number
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
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора  
ICQ Number
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
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора  
ICQ Number
michas

цитировать



Зарегистрирован: 28 Янв 2008 11:28:31
Сообщения: 123

СообщениеДобавлено: 21 Окт 2008 10:24:02    Заголовок сообщения: Ответить с цитатой

почитал мануал, при составлении правила для валидации поля есть параметр 'required' если параметр установлен в положение "true', тогда оно обязательно валидируется если 'false' то валидация должна просиходить только в том случае когда поле присутствует в массиве data. попробуйте так сделать
_________________
Все самое интересное в реальном времени - xmpp:cakephp@conference.jabber.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора  
ICQ Number
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    Заголовок сообщения: Ответить с цитатой

я не пробовал но в принципе должно прокатить.. это же обычное свойство обычного класса..
Вернуться к началу
Посмотреть профиль Отправить личное сообщение  
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru