【问题标题】:How to stop rendering Phalcon template when Ajax is used?使用 Ajax 时如何停止渲染 Phalcon 模板?
【发布时间】:2016-05-06 11:12:38
【问题描述】:

我在我的 Phalcon 项目中使用了很多 Ajax,每个请求都由特定的 Controller/Action 处理,我在其中禁用了模板渲染(仅渲染视图)。

如果使用 Ajax 进行调用,如何全局禁用模板?

【问题讨论】:

  • 你应该接受其中一个答案。

标签: ajax phalcon


【解决方案1】:

我找到了答案:)

abstract class ControllerBase extends Controller
{
    /**
     * Called in each Controller/Action request
     */
    public function initialize(){
        if($this->request->isAjax()){
            $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
        }

    ...

【讨论】:

  • 或$this->view->disable();
【解决方案2】:

对于特定操作,您可以使用以下任一实现:

public function saveAction()
{
    $this->view->disable();

    // Operations go here.....

    $this->view->pick('some/view/to/display');
}

public function resetAction()
{
    $this->view->disable();

    // Operations go here.....

    echo 'reset action'
}

public function cancelAction()
{
    $this->view->disable();

    // Operations go here.....
    $response = new \Phalcon\Http\Response();
    $response->setStatusCode(200, 'OK');
    $response->setContentType('application/json', 'UTF-8');
    $response->setJsonContent('some content goes here', JSON_UNESCAPED_SLASHES);

    return $response->send();
}

【讨论】:

    【解决方案3】:

    可用的渲染级别是:

    类常量描述顺序 LEVEL_NO_RENDER 表示避免生成任何类型的演示文稿。 LEVEL_ACTION_VIEW 生成与动作关联的视图的表示。 1 LEVEL_BEFORE_TEMPLATE 在控制器布局之前生成演示模板。 2 LEVEL_LAYOUT 生成对控制器布局的演示。 3 LEVEL_AFTER_TEMPLATE 在控制器布局之后生成对模板的演示。 4 LEVEL_MAIN_LAYOUT 生成主布局的演示文稿。文件视图/index.phtml 5

    欲了解更多信息,请参阅:control-rendering-levels

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 2018-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多