Показаны сообщения с ярлыком zf2 route. Показать все сообщения
Показаны сообщения с ярлыком zf2 route. Показать все сообщения

вторник, 18 июня 2013 г.

Child routing in ZF2

Возникла трудность с пониманием в работе с child_routes в zf2. Приведу пример:

'router' => array(
    'routes' => array(
        'backend' => array(
            'type'    => 'Literal',
            'options' => array(
                'route'    => '/backend',
                'defaults' => array(
                    '__NAMESPACE__' => 'Backend\Controller',
                    'controller'    => 'Auth',
                    'action'        => 'login',
                ),
            ),
            'may_terminate' => true,
            'child_routes' => array(
                'admin' => array(
                    'type'    => 'Segment',
                    'options' => array(
                        'route'    => '/[:controller[/:action]]',
                        'constraints' => array(
                            'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                            'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                        ),
                        'defaults' => array(
                        ),
                    ),
                ),
            ),
        ),
    ),
),

 Это роут описывает работу админки теоретического сайта. По умолчанию, когда мы заходим на http://domen/backend мы попадаем в контроллер Auth и вызываем в нем метод login.

Что бы использовать другие методы внутри родительского роута /backend нужно сделать следующее:

$this->url('backend/admin', array(
    'controller' => 'auth',
    'action' => 'authenticate'
));

При этом у нас в первом параметре хелпера передается: родительский_роут/child_роут, а потом уже как обычно все остальные параметры.

Create Full URLs in ZF2 Views

Нашел интересный блог по zf2. Информация по созданию url

http://codingexplained.com/coding/php/zend-framework/create-full-urls-in-zf2-views

// Using a route with the name "register" and the route "/register"
echo $this->url('register', array(), array('force_canonical' => true));  
// Output: http://mydomain.com/register

echo $this->serverUrl(); // Output: http://mydomain.com


// Current URL: http://mydomain.com/register
echo $this->serverUrl(true); // Output: http://mydomain.com/register



// The "register" route has the following route: /register
echo $this->serverUrl($this->url('register'));  
// Output: http://mydomain.com/register