zoukankan      html  css  js  c++  java
  • phalcon——调度控制器

    将侦听者绑定到组件上:

    use PhalconMvcDispatcher as MvcDispatcher,

        PhalconEventsManager as EventsManager;

    $di->set('dispatcher', function () {

        // 创建一个事件管理

        $eventsManager = new EventsManager();

        // 为“dispatch”类型附上一个侦听者

        $eventsManager->attach("dispatch", function ($event, $dispatcher) {

            // ...

        });

        $dispatcher = new MvcDispatcher();

        // $eventsManager绑定到视图组件

        $dispatcher->setEventsManager($eventsManager);

        return $dispatcher;

    }, true);

    一个实例化的控制器会自动作为事件调度的侦听者,所以你可以实现回调函数:

    class PostsController extends PhalconMvcController

    {

        public function beforeExecuteRoute($dispatcher)

        {

            // 在每一个找到的动作前执行

        }

        public function afterExecuteRoute($dispatcher)

        {

            // 在每一个找到的动作后执行

        }

    }

    转发执行流到另一个控制器/动作:

    $this->dispatcher->forward(array(

                "controller" => "post",

                "action" => "index"

            ));

    $this->dispatcher->forward(array(

        "action" => "search",

        "params" => array(1, 2, 3)

    ));

    (默认情况下,传递的参数会按URL传递的顺序传给对应的动作,你可以简单的调整你的应用来匹配你想要的URL格式)

    获取参数:

    获取全部参数:

    $params = $this->dispatcher->getParams();  //获取到的是一个数组

    获取指定参数:

    $content = $this->dispatcher->getParam('content');  //获取到的是一个参数值

    利用合适的调度循环事件,你还可以做:

    URL调整   转换动作名

    删除遗留的扩展名   注入模型实例

    处理Not-Found错误

    注意:

         制造一个“forward”并不等同于制造一个HTTP的重定向。尽管这两者表面上最终效果都一样。 “forward”不会重新加载当前页面,全部的重定向都只发生在一个请求里面,而HTTP重定向则需要两次请求 才能完成这个流程。

  • 相关阅读:
    FEniCS 1.1.0 发布,计算算术模型
    Piwik 1.10 发布,增加社交网站统计
    淘宝褚霸谈做技术的心态
    CyanogenMod 10.1 M1 发布
    Druid 发布 0.2.11 版本,数据库连接池
    GNU Gatekeeper 3.2 发布
    Phalcon 0.9.0 BETA版本发布,新增大量功能
    EUGene 2.6.1 发布,UML 模型操作工具
    CVSps 3.10 发布,CVS 资料库更改收集
    Opera 移动版将采用 WebKit 引擎
  • 原文地址:https://www.cnblogs.com/wujuntian/p/4695936.html
Copyright © 2011-2022 走看看