Routing Zend Framework 2路由和设置默认值';模块'';控制器'';行动';路线

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

我正在使用Zend 2 2.2.5版和骨架应用程序。我在“TestController.php”中添加了一个简单的“Member”模块

编写“测试”路由的“默认值”部分的最佳方法是什么

稍后,如何从匹配的路由中获取“模块”名称?我希望在ZF2中有一种简单的方法来获取“模块”、“控制器”、“动作”,但不知道如何获取

选项1:产生404错误

'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路由的更多信息,我建议阅读本书