Php 如何在分派前捕获请求的控制器/操作值?
Zend框架:Php 如何在分派前捕获请求的控制器/操作值?,php,zend-framework,Php,Zend Framework,Zend框架: I have the following url /base/url/[number]/[string] OR /base/url/action/controller/param/value 我希望在/base/url/[number]/[string]的情况下将其转换为 /base/url/controller/a/action/b/id/[number]/name/[string] a和b是常数(即每次我在动作的位置看到一个
I have the following url /base/url/[number]/[string]
OR /base/url/action/controller/param/value
我希望在/base/url/[number]/[string]
的情况下将其转换为
/base/url/controller/a/action/b/id/[number]/name/[string]
a和b是常数(即每次我在动作的位置看到一个数字时,我都使用相同的值)。在调度操作和控制器值之前,我在哪里可以捕获它们?您可以在routeShutdown()或preDispatch()中(在每次控制器调度之前)的控制器插件中接收操作和控制器。我想你会用routeShutdown。您可以访问请求,因此您可以将控制器和操作设置为任何内容
您可以创建自定义路由来处理此类路由,并将它们发送到正确的控制器和URL 例如:
$router = $front->getRouter();
$router->addRoute(
'my_route',
new Zend_Controller_Router_Route(
':number/:string',
array(
'controller' => 'your_controller',
'action' => 'your_action'
)
)
);
那么,如何从url中提取数字呢?我需要它是/16/something->/question/show/id/16只需在控制器中使用$this->\u getParam('number')和$this->\u getParam('string'),无论您输入什么:您使用它来提取的编号,例如,如果您的路由是::page/:您使用$this->\u getParam('page')和$this->\u getParam('name')提取的名称。