Роутинг в стиле ZF2


ЗФ2, Zend Framework 2, ZF2




И так, в ZF2 роутинг задается в файле конфига приложения или модуля (module.config.php). И для того, что бы добавить в строку адреса дополнительные параметры, нужно , что б конфигурация роутинга выглядела следующим образом:

            'adm' => array(
                'type'    => 'Literal',
                'options' => array(
                    'route'    => '/adm',
                    'defaults' => array(
                        '__NAMESPACE__' => 'AdmController',
                        'controller'    => 'Index',
                        'action'        => 'index',
                    ),
                ),
                'may_terminate' => true,
                'child_routes' => array(
                    'default' => array(
                        'type'    => 'Segment',
                        'options' => array(
                            'route'    => '[/:action][/:addon]',
                            'constraints' => array(
                                'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                                'addon'      => '[a-zA-Z][a-zA-Z0-9_-]*',
                            ),
                            'defaults' => array(
                                'addon'  => '',
                            ),
                        ),
                    ),
                ),
            ),

При таких настройках получим URL следующего вида:

http://название_сайта/adm/ControllerIndex/ActionIndex.

Третий параметр «addon» не обязателен. Но если его указать то будет так:

http://название_сайта/adm/ControllerIndex/ActionIndex/addonValue.

 

Так можно наращивать количество параметров до необходимого количества.

Если же некоторые параметры используются не всегда, то необходимо задать для них значение по умолчанию в секции «defaults», как это сделано для параметра «addon»:

                            'defaults' => array(
                                'addon'  => '',
                            ),

И тогда при формировании URL при помощи помощника, например Url()  или другого, неиспользуемые значения будут подставляться автоматически.

 

Что бы получить значения этих параметров (например «addon») в контроллере нужно сделать следующие:

$addon = $this->getEvent()->getRouteMatch()->getParam('addon', 0);

Значение «0»(ноль) переданное  вторым параметром в метод getParam() -  это значение, которое подставиться в параметр «addon», если там не окажется никакого значения.



Автор статьи: DuB