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重定向则需要两次请求 才能完成这个流程。

  • 相关阅读:
    Mysql:Error Code 1235,This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 错误解决
    java 发送带Basic Auth认证的http post请求
    spring-boot 加载本地静态资源文件路径配置
    mac上使用终端生成RSA公钥和密钥
    mysql 查看正在运行的进程
    mysql中You can’t specify target table for update in FROM clause错误解决方法
    Redis的三种启动方式
    Redis在Mac下的安装与使用方法
    Linux vi中查找字符内容的方法
    spring boot 之@JsonView 简单介绍
  • 原文地址:https://www.cnblogs.com/wujuntian/p/4695936.html
Copyright © 2011-2022 走看看