路线中的标准参数

时间:2012-12-26 12:08:07

标签: php zend-framework2

我有四个child_routes调用相同的控制器和操作。


    'noticia' => array(
        'type'    => 'Segment',
        'options' => array(
            'route' => 'noticia[/:slug]',
            'constraints' => array(
                    'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
            ),
            'defaults' => array(
                '__NAMESPACE__' => 'Application\Controller',
                'controller'    => 'Post',
                'action'        => 'index',
            ),
        ),
    ),
    'dica' => array(
        'type'    => 'Segment',
        'options' => array(
            'route' => 'dica[/:slug]',
            'constraints' => array(
                'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
            ),
            'defaults' => array(
                '__NAMESPACE__' => 'Application\Controller',
                'controller'    => 'Post',
                'action'        => 'index',
            ),
        ),
    ),
    'ovarejao' => array(
        'type'    => 'Segment',
        'options' => array(
            'route' => 'o-varejao[/:slug]',
            'constraints' => array(
                'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
            ),
            'defaults' => array(
                '__NAMESPACE__' => 'Application\Controller',
                'controller'    => 'Post',
                'action'        => 'index',
            ),
        ),
    ),
    'servicos' => array(
        'type'    => 'Segment',
        'options' => array(
            'route' => 'servicos[/:slug]',
            'constraints' => array(
                'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
            ),
            'defaults' => array(
                '__NAMESPACE__' => 'Application\Controller',
                'controller'    => 'Post',
                'action'        => 'index',
            ),
        ),
    ),

我需要传递一个参数,以便区分这些路线。怎么办?

1 个答案:

答案 0 :(得分:1)

我认为你的结构有点偏差。为什么一个控制器的一个动作有四个不同的路径?这几乎毫无意义。

将您已设置的每条路线servicosovarejaodicanoticia路由到PostController,并执行{{1}等类似操作},servicosActionovarejaoActiondicaAction

如果各自的视图中的操作非常相似,那么您也可以使用一个模板进行所有操作,这样可以使模板更容易一些。这样做:

noticiaAction

如果这不符合您的标准,请更清楚您的问题。究竟是什么,你想要实现?