【问题标题】:zf2 navigation breadcrumbs pagingzf2导航面包屑分页
【发布时间】:2016-10-21 07:28:59
【问题描述】:

找不到正确的方式来描述适用于面包屑的站点地图。

例如,我在 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'
                        )
                        ...
                    )
                )
            )
        )
    ),
),

我的意思是它应该匹配 articles/page/1articles/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 的面包屑为空?我这样做不正确吗?

【问题讨论】:

    标签: routes zend-framework2 breadcrumbs


    【解决方案1】:

    有一个类似的问题,我可以通过使用'useRouteMatch' - 标志来解决它

    'pages' => array(
                            array(
                                'label' => 'Page 1',
                                'route' => '1',
                                'useRouteMatch' => true
                            ),
                            array(
                                'label' => 'Page 2',
                                'route' => '2'
                            )
                            ...
                        )
    

    【讨论】:

      【解决方案2】:

      您必须以这种方式更改“导航”(“页面”数组为空):

      '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,
      ));
      

      这样,您的所有页面都会在面包屑中包含其名称,而不是通用术语。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多