导航面包屑不在zend框架2中呈现

时间:2013-09-24 09:14:33

标签: php zend-framework2

我是zend framwork的新手,我根据此链接(http://zf2.readthedocs.org/en/latest/tutorials/tutorial.navigation.html)进行了跟踪,但是视图或布局中没有显示痕迹。 以下是我实施的代码。指导我做错了什么?

在module.config.php中,

return array(
     ........
     'router' => array(
        'routes' => array(
            'admin' => array(
                'type'    => 'segment',
                'options' => array(
                    'route'    => '/admin[/][:action][/:id]',
                    'constraints' => array(
                        'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                        'id'     => '[0-9]+',
                    ),
                    'defaults' => array(
                        'controller' => 'Admin\Controller\Admin',
                        'action'     => 'index',
                    ),
                ),
                'may_terminate' => true,
                 'child_routes' => array(
                    'settings' => array(
                        'type'    => 'Segment',
                        'may_terminate' => true,
                        'options' => array(
                            'route'    => '/general[/][:action][/][:id]',
                            'constraints' => array(
                                'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                'id'     => '[0-9]+',
                            ),
                            'defaults' => array(
                                'controller' => 'Admin\Controller\Settings\General',
                                'action'     => 'index',
                            ),
                        ),
                    ),
                ),
            ),
            'dashboard' => array(
                'type'    => 'segment',
                'options' => array(
                    'route'    => '/admin/dashboard[/][:action][/:id]',
                    'constraints' => array(
                        'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                        'id'     => '[0-9]+',
                    ),
                    'defaults' => array(
                        'controller' => 'Admin\Controller\Dashboard',
                        'action'     => 'index',
                    ),
                ),
            ), 
        ),
    ),
    'navigation' => array(
        'default' => array(
            array(
                'label' => 'Home',
                'route' => 'admin/dashboard',
            ),
            array(
                'label' => 'Admin',
                'route' => 'admin/settings/general/',
                'pages' => array(
                    array(
                        'label' => 'General',
                        'route' => 'admin/settings/general/',
                        'action' => 'index',
                    ),
                    array(
                        'label' => 'Web',
                        'route' => 'admin/settings/general/',
                        'action' => 'web',
                    ),
                ),
            ),
        ),
    ),
'view_manager' => array(
        'template_map' => array(
            'layout/sidemenu'           => __DIR__ . '/../view/admin/common/sidemenu.phtml',  
            'layout/breadcrumbs'           => __DIR__ . '/../view/admin/common/breadcrumbs.phtml', 
            'error/404'               => __DIR__ . '/../view/error/404.phtml',
            'error/index'             => __DIR__ . '/../view/error/index.phtml',
        ),
        'template_path_stack' => array(
            'admin' => __DIR__ . '/../view',
        ),
        'display_not_found_reason' => true, 
        'display_exceptions'       => true,
        'not_found_template'       => 'error/404', 
        'doctype'                  => 'HTML5',
        'exception_template'       => 'error/index',
    ), 
    'service_manager' => array(
        'factories' => array( 
            'navigation' => 'Zend\Navigation\Service\DefaultNavigationFactory',  
        ),
    ),
    ......
);

在layout.phtml中

$this->navigation('navigation')
               ->breadcrumbs()
               ->setMinDepth(0)
               ->setPartial('layout/breadcrumbs');

1 个答案:

答案 0 :(得分:2)

请将路线条件'admin / dashboard'更改为'admin / default'。如果它仍然不起作用,那么你可以通过在module.php中实现以下代码来捕获matchedRoute:

/* put these lines on top after namespace */

use Zend\Mvc\ModuleRouteListener;

use Zend\Mvc\MvcEvent;

/* put these functions in class */

public function onBootstrap(MvcEvent $e)
{
    $eventManager = $e->getApplication()->getEventManager();
    $eventManager->attach('route', array($this, 'onRouteFinish'), -100);
}

public function onRouteFinish($e)
{
     $matches    = $e->getRouteMatch();
     $controller = $matches->getParam('controller');
     var_dump($matches);die();
}

结果,请检查["matchedRouteName":protected]的值并相应地更改module.config.php中的路由条件。祝你好运.. !!