我是Zend MVC的新手。下面是module.config.php文件中的一段代码。我想了解Zend如何选择'controller'和'action'变量。这两个特殊名称是否始终指向相应的控制器和操作?我觉得事实并非如此,因为'postId'是一个任意的变量名。所以问题是框架如何知道如何处理这两个变量。他们在哪里通过?我希望我明白这个问题。
[代码]
'options' => array(
'route' => '/blog/post[/:postId]',
'defaults' => array(
'controller' => 'blog',
'action' => 'post',
'postId' => '1'
)
[/代码]
答案 0 :(得分:1)
你说的是特别的名字。 ZF使用此参数来确定将请求分派到哪个控制器和操作。
在路由与您配置的某个模式匹配后,框架将构建一个RouteMatch
对象并在其上设置所有参数(在本例中为controller
,action
和{{ 1}})。然后在整个应用程序中可用的postId
上设置RouteMatch对象。
例如,您可以在控制器操作中访问可用的参数:
MvcEvent
您还可以创建“魔术”路线,其中包含控制器和操作参数的占位符。即。
public function myAction()
{
var_dump($this->getEvent()->getRouteMatch()->getParam('postId'));
// Or much shorter use the `Params` controller plugin
var_dump($this->params('postId'));
}
如果您现在转到/ blog / list,您的请求将被分派到博客控制器中的列表操作。