【问题标题】:How can I catch the controller/action values of a request before dispatch?如何在调度之前捕获请求的控制器/操作值?
【发布时间】:2012-12-25 08:43:06
【问题描述】:

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/[数字]/名称/[字符串] a 和 b 是常量(即每次我看到一个数字代替动作时,我使用相同的值)。
在调度动作和控制器值之前,我可以在哪里捕获它们?

【问题讨论】:

    标签: php zend-framework


    【解决方案1】:

    您可以在控制器插件中的 routeShutdown() (选择路由后一次)或 preDispatch() (在每个控制器调度之前)中接收动作和控制器。我猜你会使用 routeShutdown。您可以访问请求,因此您可以将控制器和操作设置为任何内容..

    How to write plugins

    【讨论】:

      【解决方案2】:

      您可以创建自定义路由来处理此类路由,并将它们分派到正确的控制器和 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->_getParam('number') 和 $this->_getParam('string') 你输入的任何内容 :number 你用它来提取,例如,如果你路线是: :page/:name 您使用 $this->_getParam('page') 和 $this->_getParam('name') 提取。
      猜你喜欢
      • 2013-08-16
      • 1970-01-01
      • 2019-10-14
      • 1970-01-01
      • 2012-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多