【问题标题】:PHP Phalcon: no views?PHP Phalcon:没有意见?
【发布时间】:2014-09-10 01:55:05
【问题描述】:

我正在评估与 API 一起使用的框架,并且正在认真研究 PHP Phalcon。它看起来很有希望——“精益”(加载你需要的东西),但有很多选择。

我想知道...是否可以使用视图(而是模板)?我必须设置一个视图,还是只输出.json?

谢谢!

【问题讨论】:

    标签: php templates phalcon


    【解决方案1】:

    Phalcon 中有一种方法可以在操作中禁用视图并避免不必要的处理:

    public function indexAction() {
    
        $this->view->disable();
    
        $this->response->setContentType('application/json');
        echo json_encode($your_data);
    }
    

    【讨论】:

    • 太棒了。谢谢你。也许可以将它放入类的初始化函数中,也许,因为没有任何动作需要视图。
    • 可以,你可以把disable()调用放到initialize()控制器方法中,因为这个方法is executed first, before any action is executed on a controller:docs.phalconphp.com/en/latest/reference/…
    【解决方案2】:

    根据您想要做什么,您可以按照其他人的建议禁用视图并回显 json 编码数据,或者您可以使用内置的响应对象,如下所示:

      $this->view->setRenderLevel(View::LEVEL_NO_RENDER);
      $this->response->setContentType('application/json', 'UTF-8');
      $this->response->setJsonContent($data); //where data is an array containing what you want
       return $this->response;
    

    文档中还有一个关于构建简单 REST api 的教程

    http://docs.phalconphp.com/en/latest/reference/tutorial-rest.html

    【讨论】:

    • 酷。你会在哪里做这个?在行动中?
    【解决方案3】:

    如果您根本不使用任何视图,您可以从一开始就禁用视图。

    $app = new \Phalcon\Mvc\Application();
    $app->useImplicitView(false);
    

    即使你这样做了,我认为你仍然必须设置视图 DI 才能使框架工作。

    另外,如果你想输出 json 有一个方法:

    $this->response->setJsonContent($dataArray);
    $this->response->send();
    

    【讨论】:

      【解决方案4】:

      是的,你可以做到,我正在使用 PHP Phalcon。 要忽略视图,在您的控制器中,您的操作应该类似于

      public function indexAction() {
         $var = array or other data 
         die(json_encode($var));
      }
      

      die(); 在控制器中不会渲染任何父布局! :)

      【讨论】:

      • 我真的不推荐死,Phalcon 有很多其他方法可以处理这个问题。另外,如果您在 afterExecuteRoute 等中内置了任何通用功能,它将停止执行意义。这些方法不会触发
      猜你喜欢
      • 2017-11-10
      • 1970-01-01
      • 2016-10-12
      • 2013-05-15
      • 1970-01-01
      • 2013-11-15
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多