我是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');
答案 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中的路由条件。祝你好运.. !!