return array(
array('title,category_id,status,description', 'required','on'=>'create'),
array('id,title,category_id,status,description', 'required','on'=>'update'),
array('title', 'length', 'max'=>255),
Если в админке можно создавать пользователей, то UI уже 2. Если модели покрывать тестами, то 3. Если у него есть внешнее API, то 4.но у сайтов один UI, это просто плодить сущности
Почему?идея валидации данных в контроллере мне нравится еще меньше
Можно комбинировать:да каша получается
ArticleController class
{
...
$validator = $article->getValidator()
$validator->addRule('captcha', new EqualRule($captcha_value), 'Wrong CAPTCHA-code');
}
Нет. Консоль и API это тоже UI.ты не путаешь работу с данными и интерфейс пользователя?![]()
угу, нарушим прозрачность - хрен его знает когда и зачем звать валидатор, его можно и не вызвать. А главное мы должны знать что у него он есть(ку-ку, инкапсуляция).Что если делать так: просить у объекта User его валидатор
Какая разница с точки зрения инкапсуляции, ты будешь просить у него валидатор или ловить его исключениеНеВалидности?А главное мы должны знать что у него он есть(ку-ку, инкапсуляция).
Я не понял мысли. Ну, выдаст исключение, что пустой пароль недопустим и сохранять user'а не будет. А дальше что? Как привёл пример автор треда, админу может быть нужно сохранить юзера с пустым паролем или там email'ом, а простому пользователю это недопустимо.А уже внутри объекта зашиваете обработку может ли он с таким набором данных создать или нет.PHP:$userData = getSomeVarsForCreate(); $User = new User( $userData ); try { $User->save(); }
Тут же, блин, все элементарно соедините принципы инкапсуляции и tell don't ask - получите профит.
Какая тут новая сущность? Новый метод getValidator и все. А сам класс Validator нужен в любом случае (универсальный для всех моделей, просто контейнер для правил валидации).>"просить у него валидатор"
по принципу бритвы Оккама для создания дополнительной сущности требуется причина - покажи ее
Т.е. нужен новые метод addRules() или selectRulesSet() или типа того? Все равно как-то с моделью надо взаимодействовать, как ни крути.для поддержки множества источников достаточно множества наборов правил валидации;
у модели есть состоянияодни и те же наборы данных в разных ситуациях могут быть допустимы или, наоборот, недопустимы.
В принипе, если контроллер будет впрыскивать в модель дополнительные правила типа проверки капчи, то проблемы наверно нет.у модели есть состояния
условия вызова меняют состояние, и модель валидирует данные соответственно состоянию
где ты видишь проблему?