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() }}
标记的布局中。最后 O 得到一个包含所有网站菜单、我的 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) 禁用当前 Controller::method
的布局
$this->view->setLayout('');
3) 更新: Timothy 推荐替代 (2)
$this->view->setRenderLevel(\Phalcon\Mvc\View::LEVEL_ACTION_VIEW);
我正在我的一个 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() }}
标记的布局中。最后 O 得到一个包含所有网站菜单、我的 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) 禁用当前 Controller::method
的布局$this->view->setLayout('');
3) 更新: Timothy 推荐替代 (2)
$this->view->setRenderLevel(\Phalcon\Mvc\View::LEVEL_ACTION_VIEW);