文字和段路线有什么区别?

时间:2013-02-14 13:35:10

标签: routes zend-framework2

我在zend框架2中工作,我正在为所有路由使用段类型,但我注意到在zend骨架应用程序中使用了文字路由类型。它们是什么?

2 个答案:

答案 0 :(得分:19)

我猜Umair实际上问的是,当段路由已经涵盖此功能时,文字路由的目的是什么。

用几句话解释一下;段路由在输入上使用生成的正则表达式进行相当复杂的匹配,而文字路径将进行简单的字符串比较。这使得它更快,并且在不需要参数匹配时应该首选。

答案 1 :(得分:14)

文字路线似乎适用于一次性页面,如下面的基本示例:

'router' => array(
    'routes' => array(
        'home' => array(
            'type' => 'Literal',
            'options' => array(
                'route' => '/home',
                'defaults' => array(
                    'controller' => 'homeController',
                    'action' => 'index',
                )
            )
        )
    )
)

对于那些不熟悉分段路线的人。这些是动态的,并将URL段传递给控制器​​。此示例来自Zend Framework 2入门教程

'router' => array(
    'routes' => array(
        'album' => array(
            'type'    => 'segment',
            'options' => array(
                'route'    => '/album[/:action][/:id]',
                'constraints' => array(
                    'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'id'     => '[0-9]+',
                ),
                'defaults' => array(
                    'controller' => 'Album\Controller\Album',
                    'action'     => 'index',
                ),
            ),
        ),
    ),
),

action段将转到控制器中具有该名称的函数。因此,/album/edit/2之类的网址会转到editAction()中的AlbumController功能。 可以在控制器中以几种方式访问​​id

$id = $this->params()->fromRoute('id');

$id = $this->getEvent()->getRouteMatch()->getParam('id');