【问题标题】:ZF2 Navigation OrderZF2 导航指令
【发布时间】:2015-08-27 10:47:25
【问题描述】:

我遇到了以下问题,我使用 zend 框架 2 的原始文档中的数据对其进行了测试。我不知道我是否遗漏了什么,或者它只是缺少功能。

在下面的示例中,我创建了一个具有两个级别的导航,然后使用 echo 打印导航标签。如您所见,我为第一级页面和两个第二级页面设置了顺序。如果您查看我的输出,您会发现只有第一级页面的顺序正确。二级页面的顺序不正确。

对于您在导航中大于一级的每一级,顺序都不会改变。

你们中的任何人都有同样的问题,或者可以告诉我我做错了什么吗?或者这是zend-navigation 模块的未给定功能?

谢谢

脚本

$container = new \Zend\Navigation\Navigation(
    array(
        array(
            'label' => 'ACL page 1 (guest)',
            'uri' => '#acl-guest',
            'resource' => 'nav-guest',
            'order' => 777,
            'pages' => array(
                 array(
                     'label' => 'ACL page 1.1 (foo)',
                      'uri' => '#acl-foo',
                      'resource' => 'nav-foo',
                      'order' => 666
                  ),
                  array(
                      'label' => 'ACL page 1.2 (bar)',
                       'uri' => '#acl-bar',
                       'resource' => 'nav-bar',
                  ),
                  array(
                      'label' => 'ACL page 1.3 (baz)',
                       'uri' => '#acl-baz',
                       'resource' => 'nav-baz',
                  ),
                  array(
                      'label' => 'ACL page 1.4 (bat)',
                      'uri' => '#acl-bat',
                      'resource' => 'nav-bat',
                      'order' => 111
                  ),
              ),
          ),
          array(
              'label' => 'ACL page 2 (member)',
              'uri' => '#acl-member',
              'resource' => 'nav-member',
              'order' => 555
          )
      )
  );

  foreach ($container as $page) {
      echo $page->label."<br>";
      if ($page->hasPages()) {
          foreach ($page->getPages() as $page2) {
              echo $page2->label."<br>";
          }
      }
  }
  die("ASD");

输出

ACL page 2 (member)
ACL page 1 (guest)
ACL page 1.1 (foo)
ACL page 1.2 (bar)
ACL page 1.3 (baz)
ACL page 1.4 (bat)
ASD

【问题讨论】:

    标签: php zend-framework navigation zend-framework2


    【解决方案1】:

    方法$page-&gt;getPages() 返回数组(docs)。仅当列表是 Navigation 对象时,才会对元素进行排序。

    试试:

    foreach ($container as $page) {
        echo $page->label."<br>";
        if ($page->hasPages()) {
            $subpages = new \Zend\Navigation\Navigation($page->getPages());
            foreach ($subpages as $page2) {
                echo $page2->label."<br>";
            }
        }
    }
    

    【讨论】:

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