Zend framework 2, проблема маршрутизации разбиения на страницы

У меня проблема с разбиением на страницы и маршрутизацией Zend в zf2. Я хотел бы отобразить детали элемента обратной связи и список его подэлементов (действий) на той же странице. Мой код маршрута указан ниже

$routes['dashboard_inbox_actions'] =  array(
    'type'      => 'segment',
    'options'   => array(
        'route' => '/dashboard/inbox/detail[/:feedback[/actions/page/:page]]',
        'constraints' => array(  
            'feedback'     => '[0-9]+',
            'page'         => '[0-9]+',
        ),
        'defaults' => array(      
             '__NAMESPACE__' => 'Dashboard\Controller',
            'controller'    => 'inbox' ,
            'action'        => 'detail',                
            'feedback'      => 0 ,
            'page'          => 1
        ),
    ),
);

Я передаю URL как

/dashboard/inbox/detail/4

на странице списка для отображения предоставленных страниц подэлементов.

<?php echo $this->paginationControl($this->paginator, 'Sliding' ); ?>

который создает URL-адреса подкачки с идентификатором обратной связи как 0 (это моя проблема)

/dashboard/inbox/detail/0/actions/page/2
/dashboard/inbox/detail/0/actions/page/3

Я вручную вставляю URL

 /dashboard/inbox/detail/4/actions/page/2

Он показывает страницу 2 как активный элемент. Мой код контроллера работает нормально и дает мне результат, но все же paginationControl создает URL-адрес с идентификатором обратной связи 0.


person rab    schedule 24.10.2012    source источник


Ответы (1)


Вам нужно использовать четвертый параметр помощника представления paginationControl:

<?php 
    echo $this->paginationControl($this->paginator, 'Sliding',
          'my_pagination_control', array('route' => 'paginator_route')); 
?>

Вы можете передать параметры частичному представлению, например, передать имя вашего маршрута, чтобы вы могли генерировать ссылки на йору, используя правильный маршрут.

затем внутри вашего частичного представления вы можете использовать это в помощнике URL:

<?php echo $this->url($this->route, array('page' => $this->first), FALSE, TRUE) ?>

см.: http://framework.zend.com/manual/2.0/en/modules/zend.view.helpers.html#url-helper, где вы можете увидеть, что помощник URL-адреса может использовать текущие параметры соответствия:

url($name, $urlParams, $routeOptions, $reuseMatchedParams)

Установка для $reuseMatchedParams значения true позволит использовать текущие совпадающие параметры в качестве значений по умолчанию.

person Andrew    schedule 04.02.2013