我在 zend 框架 2 中工作,我对所有路由都使用了段类型,但我注意到在 zend 骨架应用程序中使用了文字路由类型。这些是什么?
问问题
5663 次
2 回答
19
我猜 Umair 真正要问的是,当分段路由已经涵盖此功能时,字面路由的目的是什么。
用几句话来解释它;段路由使用生成的正则表达式对输入进行相当复杂的匹配,而文字路由将进行简单的字符串比较。这使它更快,并且在不需要参数匹配时应该是首选。
于 2013-02-25T04:31:47.793 回答
14
文字路线似乎适用于一次性页面,如下面的基本示例:
'router' => array(
'routes' => array(
'home' => array(
'type' => 'Literal',
'options' => array(
'route' => '/home',
'defaults' => array(
'controller' => 'homeController',
'action' => 'index',
)
)
)
)
)
对于那些不熟悉分段路线的人。这些是动态的,并将 URL 段传递给控制器。这个例子来自 Zend Framework 2 Getting Started Tutorial
'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
段将转到具有该名称的控制器中的函数。所以一个类似的URL/album/edit/2
将转到editAction()
. 可以在控制器中通过多种方式访问AlbumController
。id
$id = $this->params()->fromRoute('id');
或者
$id = $this->getEvent()->getRouteMatch()->getParam('id');
于 2013-02-21T03:10:08.143 回答