Filter data in models or in controllers?..

11 views
Skip to first unread message

Kirby

unread,
Nov 9, 2011, 9:27:00 AM11/9/11
to ru-zend-framework
Привет!
Вопрос по mvc наверное больше, чем по зенду. Собственно это не вопрос,
а просто хотелось бы узнать кто как делает.
У нас есть модель, которую должны быть засеттаны данные, и часть из
них должны быть профильтрованны, например, с помощью "strip tags". Где
вы бы это сделали: в модели или в контроллере?..
Замечу что такой код должно быть удобно тестировать.

Constantine Karnacevych

unread,
Nov 9, 2011, 9:44:47 AM11/9/11
to ru-zend-...@googlegroups.com
О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫. О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫О©╫О©╫
О©╫О©╫О©╫О©╫О©╫О©╫

09.11.2011 16:27, Kirby О©╫О©╫О©╫О©╫О©╫:
> О©╫О©╫О©╫О©╫О©╫О©╫!
> О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ mvc О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫. О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫,
> О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫.
> О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫, О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫
> О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫, О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ "strip tags". О©╫О©╫О©╫
> О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫: О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫?..
> О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫.

Dark

unread,
Nov 9, 2011, 9:53:04 AM11/9/11
to ru-zend-...@googlegroups.com
Я бы делал в модели однозначно.

On 9 November 2011 17:44, Constantine Karnacevych
<constantine...@gmail.com> wrote:
> смотря для чего используется фильтрация. тестировать одинаково, юзкейсы
> разные
>
> 09.11.2011 16:27, Kirby пишет:

Федор

unread,
Nov 9, 2011, 10:02:41 AM11/9/11
to Kirby, ru-zend-framework
пїЅ domain model, пїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅ service layer :)


--- пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ ---
пїЅпїЅ пїЅпїЅпїЅпїЅ: "Kirby" <andk...@gmail.com>
пїЅпїЅпїЅпїЅ: "ru-zend-framework" <ru-zend-...@googlegroups.com>
пїЅпїЅпїЅпїЅ: 9 пїЅпїЅпїЅпїЅпїЅпїЅ 2011, 16:27:06
пїЅпїЅпїЅпїЅ: [ru-zend-framework:8870] Filter data in models or in controllers?..



пїЅпїЅпїЅпїЅпїЅпїЅ!
пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ mvc пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅ. пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ,
пїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ.
пїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ, пїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅ
пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ "strip tags". пїЅпїЅпїЅ
пїЅпїЅ пїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ: пїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ?..
пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ.


пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅ

Olekhy Khutoretsky

unread,
Nov 10, 2011, 1:12:12 AM11/10/11
to ru-zend-...@googlegroups.com

Где угодно только не в контролере.

09.11.2011 16:02 пользователь "Федор" <sav...@ukr.net> написал:
В domain model, а еще лучше в service layer :)


--- Исходное сообщение ---
От кого: "Kirby" <andk...@gmail.com>
Кому: "ru-zend-framework" <ru-zend-...@googlegroups.com>
Дата: 9 ноября 2011, 16:27:06
Тема: [ru-zend-framework:8870] Filter data in models or in controllers?..
С уважением, Федор

Сергей Рябинин

unread,
Nov 10, 2011, 4:46:32 AM11/10/11
to ru-zend-...@googlegroups.com
В симфони я бы на фильтре и фильтранул без головняка.

10 ноября 2011 г. 1:12 пользователь Olekhy Khutoretsky
<ole...@googlemail.com> написал:

Kirby Rs

unread,
Nov 10, 2011, 5:19:03 AM11/10/11
to ru-zend-...@googlegroups.com
Сергей Рябинин <scan...@gmail.com> написал:

В симфони я бы на фильтре и фильтранул без головняка.
 
Пардон, что значит на фильтре?..

Сергей Рябинин

unread,
Nov 10, 2011, 5:39:00 AM11/10/11
to ru-zend-...@googlegroups.com
Там просто эта фича предусмотрена.
Если тебе нужно предварительно проверить или фильтрануть данные,
то пишешь объект с нужными свойствами и методами и
регистрируешь в файлике filters.yml
то задача решена. Как это устроено в zend фреймворке не знаю.
Но учитывая синфазность выхода релизов - думаю что механизм есть.


10 ноября 2011 г. 5:19 пользователь Kirby Rs <andk...@gmail.com> написал:

Marat

unread,
Nov 10, 2011, 8:08:53 AM11/10/11
to ru-zend-framework
Для фильтрации и валидации можно исопользовать Zend_Form - если
конечно не тяжело написать отдельно для этого класс. Также код
фильтрации можно поместить в хелпер, который будет на входе получать
обычные данные, а на выходе отдавать отфильтрованные. Оба метода очень
восприимчивы к тестированию

On Nov 10, 5:39 am, Сергей Рябинин <scanne...@gmail.com> wrote:
> Там просто эта фича предусмотрена.
> Если тебе нужно предварительно проверить или фильтрануть данные,
> то пишешь объект с нужными свойствами и методами и
> регистрируешь в файлике filters.yml
> то задача решена. Как это устроено в zend фреймворке не знаю.
> Но учитывая синфазность выхода релизов - думаю что механизм есть.
>

> 10 ноября 2011 г. 5:19 пользователь Kirby Rs <andki...@gmail.com> написал:
>
>
>
> > Сергей Рябинин <scanne...@gmail.com> написал:

Kirby Rs

unread,
Nov 11, 2011, 5:17:12 AM11/11/11
to ru-zend-...@googlegroups.com
Zend_Form конечно хорошо, но он весьма тяжел для обычной фильтрации. Кстати, формы как правило используют в контроллере, то тестировать прийдется уже контроллер.
Ну и если Zend_Form на проекте не используется, то вариант этот отпадает. Хотя использовать Zend_Form мне нравится.

10 ноября 2011 г. 15:08 пользователь Marat <marat....@gmail.com> написал:

Марат Мамяшев

unread,
Nov 11, 2011, 5:28:47 AM11/11/11
to ru-zend-...@googlegroups.com
Данные от форм я фильтрую в форме.
class Form_Login extends Zend_Form
{
    /**
     * Init form with pass, username and remember checkbox (3 weeks in controller)
     * 
     * @return void
     */
    public function init ()
    {  
        $username = $this->createElement('text', 'email')
                         ->setLabel('Email)')
                         ->addFilters(array('StringToLower', 'StripTags', 'StringTrim'))
                         ->addValidator('EmailAddress')
                         ->setRequired(true);

Встречал как-то и такой формат прямо в контроллере авторизации
            $f = new Zend_Filter_StripTags();
            $password = $f->filter($this->_request->getPost('password'));
            $password2 = $f->filter($this->_request->getPost('password2'));

В любом случае, можно всегда вызывать любой фильтр явно и применять его согласно контексту по необходимости.
Reply all
Reply to author
Forward
0 new messages