Php 如何在分派前捕获请求的控制器/操作值?

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是常数(即每次我在动作的位置看到一个

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是常数(即每次我在动作的位置看到一个数字时,我都使用相同的值)。

在调度操作和控制器值之前,我在哪里可以捕获它们?

您可以在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')提取的名称。