Zend 2面包屑问题

时间:2017-06-16 18:01:02

标签: navigation zend-framework2 partial-views

我已经关注导航/局部的几个教程,并且显示它有问题。我在模块中为view / partial创建了一个文件夹,并向控制器添加了一个动作(不要认为我需要这个)。所以在我的布局中我称之为:

  <?php echo $this->navigation('navigation')->breadcrumbs()->setMinDepth(0)->setPartial('partial/breadcrumb.phtml'); ?>

然后,当我尝试加载任何页面时,会出现此错误:

致命错误:Zend \ View \ Exception \ RuntimeException:Zend \ View \ Renderer \ PhpRenderer :: render:无法渲染模板&#34; partial / breadcrumb.phtml&#34 ;;解析器无法解析为第170行/var/www/html/vendor/Zend/View/Helper/Navigation/AbstractHelper.php中的文件

提前感谢任何帮助。

更新:2017年6月18日美国东部时间上午9:20

我有两个页面没有显示面包屑。我认为这是因为他们有'约束'。我把它放在导航中,但似乎没有用。有谁知道这样做的正确方法是什么?

            array(
                'label' => 'View',
                'route' => 'blog/view[/:post_id]',
                'action' => 'view',
            ),
            array(
                'label' => 'List',
                'route' => 'blog/list[/:state_id]',
                'action' => 'list',
            ),

2017年6月19日星期一更新 - 添加了更多导航 导航:

    'navigation' => array(
'default' => array(
    array(
        'label' => 'Home',
        'route' => 'home',
    ),
    array(
        'label' => 'Blog',
        'route' => 'blog',
        'pages' => array(
            array(
                'label' => 'Maps',
                'route' => 'blog/maps',
                'action' => 'maps',
            ),
            array(
                'label' => 'US Map',
                'route' => 'blog/us-map',
                'action' => 'UsMap',
            ),
            array(
                'label' => 'View',
                'route' => 'blog/view[/:post_id]',
                'action' => 'view',
            ),
            array(
                'label' => 'List',
                'route' => 'blog/list[/:state_id]',
                'action' => 'list',
             ),
          ),
       ),
    ),
 ),

1 个答案:

答案 0 :(得分:0)

看来你应该隐式映射你正在使用的模板。因此,请打开module.config.php,然后设置模板

'view_manager' => [

    'template_map' => [
        // This can be any name
        'partial/breadcrumb' => __DIR__ . '/../view/partial/breadcrumb.phtml',

        // Other assignments
    ],
    'template_path_stack' => [
        __DIR__ . '/../view',
    ],        
],

现在使用以下内容代替setPartial('partial/breadcrumb.phtml')

setPartial('partial/breadcrumb')

添加显示面包屑链接

虽然我没有看到您的module.config.php路由配置。我可能错了,但我猜你没有在导航配置中使用route键的路由名称。如果路线如下所示

'application' => [
    'type'    => Segment::class,
    'options' => [
        'route'    => '/application[/:action]',
        'defaults' => [
            'controller' => Controller\IndexController::class,
            'action'     => 'index',
        ],
    ],
],

您的路线配置应位于导航阵列中,如下所示

[
    'label' => 'Application',
    'route' => 'application', // but not /application[/:action]
    'action' => 'view',
],

此处application是路径名称(路线的顶部键),而/application[/:action]是路线模式。

告诉我们它是否对您有帮助!