Phalcon PhP-如何禁用一个动作的主布局


Phalcon PhP - how to disable the main layout for an action

我正在我的一个phalcon控制器中创建一个操作,该操作将用于生成页面的打印版本。这是我的print.volt布局:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Print</title>
</head>
<body>
<!-- Begin page content -->
<div class="container">
    {% block content %}{% endblock %}
</div>
</body>
</html>

我的观点:

{% extends "layouts/print.volt" %}
{% block content %}
    HERE
    <script type="text/javascript">
        window.print();
    </script>
{% endblock %}

它正在工作,但我的问题是生成的内容被插入到另一个具有{{ content() }}标记的布局中。最后,我得到了一个包含所有网站菜单、我的print.volt和我的视图的页面。我想知道如何在没有主布局的情况下将视图插入print.volt中。如何禁用此行为?

谢谢你的帮助!

我想到了两个选项。

1( 使用简单视图,它可以在没有布局的情况下渲染模板:

$view = new 'Phalcon'Mvc'View'Simple();
$view->setViewsDir('PATH_TO_YOUR_VIEWS');
$html = $view->render('template-name', $params);

当生成用于发送电子邮件的HTML时,此选项也非常方便。

2( 禁用当前控制器的布局::方法

$this->view->setLayout('');

3( 更新:Timothy推荐了(2(的替代方案

$this->view->setRenderLevel('Phalcon'Mvc'View::LEVEL_ACTION_VIEW);