Uma*_*bid 12 routes zend-framework2
我在zend框架2中工作,我正在为所有路由使用段类型,但我注意到在zend骨架应用程序中使用了文字路由类型.这些是什么?
DAS*_*RiD 19
我猜Umair实际上问的是,当段路由已经涵盖此功能时,文字路由的目的是什么.
用几句话解释一下; 段路由在输入上使用生成的正则表达式进行相当复杂的匹配,而文字路径将进行简单的字符串比较.这使得它更快,并且在不需要参数匹配时应该是首选.
小智 14
文字路线似乎适用于一次性页面,如下面的基本示例:
'router' => array(
'routes' => array(
'home' => array(
'type' => 'Literal',
'options' => array(
'route' => '/home',
'defaults' => array(
'controller' => 'homeController',
'action' => 'index',
)
)
)
)
)
Run Code Online (Sandbox Code Playgroud)
对于那些不熟悉分段路线的人.这些是动态的,并将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',
),
),
),
),
),
Run Code Online (Sandbox Code Playgroud)
该action段将转到具有该名称的控制器中的函数.所以像这样的URL /album/edit/2将转到该editAction()函数中AlbumController.该id可访问的情侣在控制器的方式.
$id = $this->params()->fromRoute('id');
Run Code Online (Sandbox Code Playgroud)
要么
$id = $this->getEvent()->getRouteMatch()->getParam('id');
Run Code Online (Sandbox Code Playgroud)