Zend Framework: Action Helper

    xiaoxiao2021-03-25  104

    Zend Framework 默认包含了许多action helper:

    AutoComplete用来自动response AJAX autocompletion;ContextSwitch和AjaxContext服务于你的actions的交替response格式;FlashMessenger用来处理session flash messages;Json用来encoding和发送JSON response;Redirector提供不同的实现方法来重定向到你的应用中的不同的页面(这里也就是说$this->redirect());ViewRenderer用来自动化设置view object给你的controller和rendering views。

    ActionStack

    *ActionStack*helper允许你push requests给ActionStack front controller plugin,非常有效的帮助你在执行request时创建一个actions队列。这个helper允许你通过指定一个新的request或action-controller-module set的方式添加actions。

    My comprehension

    也就是说这个ActionStack可以用来控制action的访问的,也就是在controller里面的Action方法中让它也能用上其他action里面的功能,在功能都一样的情况下,就没必要多写一遍,使用这个方法就可以很好来在action里请求别的action。下面上代码(Zend文档里面的) Example#1Adding a Task Using Action, Controller and Module Names 这就和Zend_Controller_Action::_forward()是一样的

    class FooController extends Zend_Controller_Action { public function barAction() { // Add two actions to the stack // Add call to /foo/baz/bar/baz // (FooController::bazAction() with request var bar == baz) $this->_helper->actionStack('baz', 'foo', 'default', array('bar' => 'baz')); // Add call to /bar/bat // (BarController::batAction()) $this->_helper->actionStack('bat', 'bar'); } }

    Example #2 Adding a Task Using a Request Object 有时候OOP特性中的request object非常有意义;你也可以通过object的方法发送给ActionStack

    class FooController extends Zend_Controller_Action { public function barAction() { // Add two actions to the stack // Add call to /foo/baz/bar/baz // (FooController::bazAction() with request var bar == baz) $request = clone $this->getRequest(); // Don't set controller or module; use current values $request->setActionName('baz') ->setParams(array('bar' => 'baz')); $this->_helper->actionStack($request); // Add call to /bar/bat // (BarController::batAction()) $request = clone $this->getRequest(); // don't set module; use current value $request->setActionName('bat') ->setControllerName('bar'); $this->_helper->actionStack($request); } }
    转载请注明原文地址: https://ju.6miu.com/read-11515.html

    最新回复(0)