hell0w0rd
Продвинутый новичок
Правда?) И как вы наследование устроите себе?php по моему мнению и так является шаблонизатором, и его вполне хватает...
Правда?) И как вы наследование устроите себе?php по моему мнению и так является шаблонизатором, и его вполне хватает...
Как же? Контроллер видит что ему запрошен user: id=100500 - он просит модель - дай-ка мне юзера с id 100500, она дает, он сует в шаблон эти данные и отдает.WRONG.
Это как раз типичное неправильное понимание роли контроллера, о котором Василий М. пытался написать в википедии. Это как раз ТТУК.
Контроллер _связывает_ model и view, об их данных он ничего не знает. Зачем ему знать?
О каком наследовании идет речь?Правда?) И как вы наследование устроите себе?
Нет.Как же? Контроллер видит что ему запрошен user: id=100500 - он просит модель - дай-ка мне юзера с id 100500, она дает, он сует в шаблон эти данные и отдает.
$UserModel = new UserModel;
$UserModel->loadById($Request->getVar('user_id'));
$View->assign('User', $UserModel);
return $this->render('template.tpl', $View);
Конечно! Через шаблонизатор же)) <?php $view->extend('::base.html.php') ?>GusakovNick
Легко, кстати.
http://symfony.com/doc/current/book/templating.html - там рядышком примеры на Twig и PHP.
Не то, чтобы я был против, я приверженец как раз Твига, но справедливости ради.
Почитайте по ссылке в следующем ответе. Удобная штука)О каком наследовании идет речь?
хорошо, отправляет данные - суть не меняетсяНет.
Никаких "сует данные".PHP:$UserModel = new UserModel; $UserModel->loadById($Request->getVar('user_id')); $View->assign('UserModel', $UserModel); return $this->render('template.tpl', $View);
Я разве где-то сказал, что после запроса у модели данных контроллер их как-то обрабатывает?Суть меняется.
Если будет
$user_data = $UserModel->getById(...);
//...
$View->assign('user_data', $user_data);
то плейсхолдер "//..." становится миной замедленного действия, где будет укореняться и произрастать говнокод с обработкой $user_data ифами, форичами и такой-то матерью, то есть контроллер становится смесью бизнес-логики, вью-логики и вообще хз чем но не контроллером.
Если же мы делаем assign модели, это становится невозможно.
Вы любитель додумывать за другихА это неважно, что сказал. =)
Все равно там ОНО появится при таком подходе. Неминуемо. Начнется с "ну я же по-быстрому, потом поправлю". А потом не успеешь опомниться, как там уже сто строк.
Особенно если пишешь не ты один.
Вот из мануала по Symfony цитата:php по моему мнению и так является шаблонизатором, и его вполне хватает...
Я бы не стал использовать PHP в виде шаблонизатора, плохо справляется.Twig can also do things that PHP can't, such as whitespace control, sandboxing, automatic and contextual output escaping, and the inclusion of custom functions and filters that only affect templates.
Жду примера...Я бы не стал использовать PHP в виде шаблонизатора, плохо справляется.
Кто выносит в формы?GusakovNick
Дело все в том, что во всех она устроена одинакова, одни и те же принципы, либо вынести всю валидацию в модель форм, или все внутрь модели запихнуть, а по мне то так не совсем правильно делать, даже с точки зрения ооп...
// обработка POST-запроса на регистрацию
private function post()
{
// Из POST принимаем данные и создаем объект модели $this->user
// Валидация модели УЖЕ прошла при присвоении значений свойствам объекта
// модель МОЖЕт содержать ошибочные данные, но в модели будет информация об этих ошибках
$this->user = $this->getMapper('User/User')->createFromPost($this->getRequest()->getPost('user'));
// Пользователь может послать любой числовой ID,
// который будет транслирован в объект - предотвращаем хак
$this->user->setId($this->getCurrentUser()->getId());
// Инстанцируем валидатор, работающий на основе цепочек.
// Он может принимать много-много валидаторов, проверять их и отдавать отчеты об ошибках в виде массива..
// параметры - пути к языковым фай1лам описания ошибок
$validator = new Krugozor_Validator_Chain('common/general', 'user/registration');
// Добавляем в валидатор ошибки модели (если они есть там)
$validator->addModelErrors($this->user->getValidateErrors());
// добавляем новый валидатор проверки капчи
$validator->add('captcha', new Krugozor_Module_Common_Validator_Captcha(
$this->getRequest()->getPost('captcha_code'), Krugozor_Session::getInstance()->code
));
// если логин указан...
if ($this->user->getLogin())
{ // добавляем валидатор проверки занятости такого логина
$validator->add('login', new Krugozor_Module_User_Validator_UserLoginExists(
$this->user, $this->getMapper('User/User')
));
}
// если указан email...
if ($this->user->getEmail()->getValue())
{ // добавляем валидатор проверки занятости такого email адреса
$validator->add('email', new Krugozor_Module_User_Validator_UserMailExists(
$this->user, $this->getMapper('User/User')
));
}
// валидируем все валидаторы
$validator->validate();
// ошибки в модели либо ошибки из цепочки валидаторов
if ($this->getView()->err = $validator->getErrors())
{
// давай, до свидания! (показ формы с ошибками)
}
else // ошибко нет - запись данных
{
// ...
Выше я написал, что такие поля как капча или повтор пароля, это никак к сущности пользователя не относится, соответственно в сущности пользователя этих данных и не будет...Не знаю как в других - в симфони все сведется к объекту модели, ее и отправляют на валидацию. Что еще нужно подвергать валидации-то?