无法找到描述使用面包屑的站点地图的正确方法。
例如,我有 module.config.php
中描述的导航'navigation' => array(
'default' => array(
array(
'label' => 'Home',
'route' => 'home'
),
array(
'label' => 'Articles',
'route' => 'articles',
'pages' => array(
array(
'label' => 'Paging',
'route' => 'articles',
'id' => 'articles',
'pages' => array(
array(
'label' => 'Page 1',
'route' => '1'
),
array(
'label' => 'Page 2',
'route' => '2'
)
...
)
)
)
)
),
),
我的意思是它应该匹配文章/ page / 1 和文章/ page / 2 等模式......
路线位于 autoload / routes.global.php
'articles' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/articles',
'defaults' => array(
'controller' => 'Articles\Controller\Index',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'pagination' => array(
'type' => 'Segment',
'options' => array(
'route' => '/page[/:page]',
'constraints' => array(
'page' => '[0-9A-Za-z]+',
),
'defaults' => array(
'controller' => 'Articles\Controller\Index',
'action' => 'index',
),
),
),
),
),
我需要进行动态面包屑分页。 所以我试图从控制器
添加示例页面$navi = $this->getServicelocator()->get('Navigation');
$page = $navi->findById('articles');
$page->addPage(
array(
'label' => 'Page 10',
'route' => '10'
)
);
articles / page / 10 时面包屑是空的?我这样做是不是正确的方式?
答案 0 :(得分:0)
有一个类似的问题,我可以使用'useRouteMatch'来解决它 - 标志
'pages' => array(
array(
'label' => 'Page 1',
'route' => '1',
'useRouteMatch' => true
),
array(
'label' => 'Page 2',
'route' => '2'
)
...
)
答案 1 :(得分:0)
你必须以这种方式改变你的“导航”(“pages”数组为空):
'navigation' => array(
'default' => array(
array(
'label' => 'Home',
'route' => 'home'
),
array(
'label' => 'Articles',
'route' => 'articles',
'pages' => array(
array(
'label' => 'Paging',
'route' => 'articles',
'id' => 'articles',
'pages' => array()
)
)
)
),
然后,在您的控制器操作中,您必须添加以下代码:
$navigation = $this->getServiceLocator()->get('Navigation');
$page = $navigation->findBy('id', 'article');
$page->addPage(array(
'uri' => $this->getRequest()->getRequestUri(),
'label' => 'Page ' . $pageNumber,
'active' => true,
));
就像那样,你的所有页面都会将自己的名字放在面包屑中而不是通用术语。