ZF2导航与骨架默认路由

时间:2013-03-20 19:10:53

标签: php zend-framework2

目前我正在使用ZF2中的Zend Navigation,我遇到了以下问题

在我的应用程序模块中,我有以下配置(默认骨架应用程序)

....
'router' => array(
    'routes' => array(
        'home' => array(
            'type' => 'Zend\Mvc\Router\Http\Literal',
            'options' => array(
                'route'    => '/',
                'defaults' => array(
                    'controller' => 'Application\Controller\Index',
                    'action'     => 'index',
                ),
            ),
        ),
        // The following is a route to simplify getting started creating
        // new controllers and actions without needing to create a new
        // module. Simply drop new controllers in, and you can access them
        // using the path /application/:controller/:action
        'application' => array(
            'type'    => 'Literal',
            'options' => array(
                'route'    => '/application',
                'defaults' => array(
                    '__NAMESPACE__' => 'Application\Controller',
                    'controller'    => 'Index',
                    'action'        => 'index',
                ),
            ),
            'may_terminate' => true,
            'child_routes' => array(
                'default' => array(
                    'type'    => 'Segment',
                    'options' => array(
                        'route'    => '/[:controller[/:action]]',
                        'constraints' => array(
                            'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                            'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                        ),
                        'defaults' => array(
                        ),
                    ),
                ),
            ),
        ),
        'info' => array(
            'type' => 'Zend\Mvc\Router\Http\Literal',
            'options' => array(
                'route'    => '/phpinfo',
                'defaults' => array(
                    'controller' => 'Application\Controller\Index',
                    'action'     => 'info',
                ),
            ),
        ),
    ),
),
....
'navigation' => array(
    'default' => array(
        array(
            'label' => 'Home',
            'route' => 'home',
            'order' => -1,
            'pages' => array(
                array( //<-- this isn't working gives a link to /application
                    'label'         => 'Telefoonboek',
                    'route'         => 'application',
                    'module'        => 'application',
                    'controller'    => 'telefoonboek',
                    'action'        => 'index',
                ),
                array( //<-- this works
                    'label'         => 'Telefoonboek2',
                    'uri'           => '/application/telefoonboek', 
                ),
                array( //<-- this works
                    'label'         => 'info',
                    'route'         => 'info',
                ),
            ),
        ),

    ),
),
....

我目前只能在我为菜单中的“每个”项目添加路线时才能使导航工作。但这是一种奇怪的解决方案。

这是使菜单正常工作的正确方法,还是我需要对页面做些喜欢的事情?

1 个答案:

答案 0 :(得分:2)

我实际上让它自己工作:)而不是使用父(应用程序)路由我需要指向子路由应用程序/默认问题已解决

所以配置现在看起来像

   ....
'navigation' => array(
    'default' => array(
        array(
            'label' => 'Home',
            'route' => 'home',
            'order' => -1,
            'pages' => array(
                array( //<-- this NOW works too
                    'label'         => 'Telefoonboek',
                    'route'         => 'application/default',
                    'controller'    => 'telefoonboek',
                    'action'        => 'index',
                ),
                array( //<-- this works
                    'label'         => 'Telefoonboek2',
                    'uri'           => '/application/telefoonboek', 
                ),
                array( //<-- this works
                    'label'         => 'info',
                    'route'         => 'info',
                ),
            ),
        ),

    ),
),
....