Routing Zend Framework 2路由和设置默认值';模块'';控制器'';行动';路线
我正在使用Zend 2 2.2.5版和骨架应用程序。我在“TestController.php”中添加了一个简单的“Member”模块 编写“测试”路由的“默认值”部分的最佳方法是什么 稍后,如何从匹配的路由中获取“模块”名称?我希望在ZF2中有一种简单的方法来获取“模块”、“控制器”、“动作”,但不知道如何获取 选项1:产生404错误Routing Zend Framework 2路由和设置默认值';模块'';控制器'';行动';路线,routing,zend-framework2,Routing,Zend Framework2,我正在使用Zend 2 2.2.5版和骨架应用程序。我在“TestController.php”中添加了一个简单的“Member”模块 编写“测试”路由的“默认值”部分的最佳方法是什么 稍后,如何从匹配的路由中获取“模块”名称?我希望在ZF2中有一种简单的方法来获取“模块”、“控制器”、“动作”,但不知道如何获取 选项1:产生404错误 'defaults' => array( 'module' => 'Member', 'controller' => 'Tes
'defaults' => array(
'module' => 'Member',
'controller' => 'Test',
'action' => 'index',
),
A $matchedRoute->getParam('module'); prints 'Member'
A $matchedRoute->getParam('controller'); prints 'Test'
A $matchedRoute->getParam('action'); prints 'index'
发生404错误,未找到页面。
请求的控制器无法映射到现有控制器类。
控制器:测试(解析为无效的控制器类或别名:测试)
选项2:有效,但“模块”为空
'defaults' => array(
'__NAMESPACE__' => 'Member\Controller',
'controller' => 'Test',
'action' => 'index',
),
A $matchedRoute->getParam('module'); prints '' <= EMPTY
A $matchedRoute->getParam('controller'); prints 'Test'
A $matchedRoute->getParam('action'); prints 'index'
'defaults' => array(
'controller' => 'Member\Controller\Test',
'action' => 'index',
),
A $matchedRoute->getParam('module'); prints '' <= EMPTY
A $matchedRoute->getParam('controller'); prints 'Member\Controller\Test'
A $matchedRoute->getParam('action'); prints 'index'
您通常会为您的操作添加路径,如下所示:
'test' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/test',
'defaults' => array(
'module' => '__NAMESPACE__',
'controller' => '__NAMESPACE__\Controller\Test',
'action' => 'index',
),
),
),
要使\uuuuu名称空间\uuuuu
持续工作,请在模块配置的开头添加以下行:
namespace Member;
从路由中提取参数
路由匹配时,路由器(顶级路由类)返回
一些参数:“默认值”(参数列在
路由配置)加上从URL字符串提取的任何通配符参数
要在控制器的操作方法中从路由检索参数,
通常使用Params
控制器插件及其fromRoute()
方法,
它接受两个参数:要检索的参数的名称和要检索的值
如果参数不存在,则返回
fromRoute()
方法也可用于一次作为数组检索所有参数。
为此,请在不带参数的情况下调用fromRoute()
,如下例所示:
// An example action.
public function indexAction() {
// Get the single 'id' parameter from route.
$id = $this->params()->fromRoute('id', -1);
// Get all route parameters at once as an array.
$params = $this->params()->fromRoute();
//...
}
检索RouteMatch和路由器对象
在路由匹配上,router类在内部创建Zend\Mvc\router\RouteMatch
类的实例,
提供从路由中提取匹配路由名称和参数的方法
要从控制器的操作方法中获取RouteMatch
对象,可以使用以下命令
代码:
有关ZF2路由的更多信息,我建议您阅读本书。您通常会为您的操作添加一条路由,如下所示:
'test' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/test',
'defaults' => array(
'module' => '__NAMESPACE__',
'controller' => '__NAMESPACE__\Controller\Test',
'action' => 'index',
),
),
),
要使\uuuuu名称空间\uuuuu
持续工作,请在模块配置的开头添加以下行:
namespace Member;
从路由中提取参数
路由匹配时,路由器(顶级路由类)返回
一些参数:“默认值”(参数列在
路由配置)加上从URL字符串提取的任何通配符参数
要在控制器的操作方法中从路由检索参数,
通常使用Params
控制器插件及其fromRoute()
方法,
它接受两个参数:要检索的参数的名称和要检索的值
如果参数不存在,则返回
fromRoute()
方法也可用于一次作为数组检索所有参数。
为此,请在不带参数的情况下调用fromRoute()
,如下例所示:
// An example action.
public function indexAction() {
// Get the single 'id' parameter from route.
$id = $this->params()->fromRoute('id', -1);
// Get all route parameters at once as an array.
$params = $this->params()->fromRoute();
//...
}
检索RouteMatch和路由器对象
在路由匹配上,router类在内部创建Zend\Mvc\router\RouteMatch
类的实例,
提供从路由中提取匹配路由名称和参数的方法
要从控制器的操作方法中获取RouteMatch
对象,可以使用以下命令
代码:
有关ZF2路由的更多信息,我建议阅读本书