欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

phalcon对控制器返回值的使用以输出json

程序员文章站 2022-03-03 14:48:24
...
在phalcon里,控制器的Action的方法的返回值没啥用。

通过事件管理器,让返回值起作用。

例如

    public function indexAction()
    {
        $this->view->disable();
        return ['aa'=>1, 'status'=> 0 ];

    }


上面这个代码,打开页面没有输出。

而我现在希望,能和laravel 一样,返回数组的话,能自动输出json格式。

利用phalcond的事件管理器,轻松实现此要求,代码如下:
$di->setShared('dispatcher', function()use($di) {
    $dispatcher = new Dispatcher();
    $dispatcher->setDefaultNamespace('Learn_phalcon\Modules\Frontend\Controllers');
    $eventManager = new EventsManager();
    $eventManager->attach('dispatch:afterDispatch' ,function (Event $event, $dispatcher)use($di) {
        $arr = $dispatcher->getReturnedValue();// 获取action的返回
        if (is_array($arr)) { // 判断是否是数组,
            $response = $di->getResponse();
            $response->setHeader('Content-Type', 'application/json');
            $response->setContent(json_encode($arr, JSON_UNESCAPED_UNICODE));
            $response->send();
        }
    });
    $dispatcher->setEventsManager($eventManager);
    return $dispatcher;
});

让phalcon再次wei大!