Phalcon中的占位符
Placeholders in Phalcon
我习惯了ASP.NET MVC,在那里我可以在Razor视图中定义一个部分,如下所示:
@Html.RenderSection( "scripts" )
我通常把它放在布局视图的底部。这样,我就可以从我的视图中添加脚本,它们将包含在正文的底部,其中定义了脚本部分:
@section scripts {
<script>
(function () {
// do stuff...
}());
</script>
}
在Phalcon中,我可以将其放在布局视图的底部:
$this->assets->outputJs();
然后我可以从我的视图中添加脚本,如下所示:
$this->assets->addJs('js/whatever.js');
该方法唯一的缺点是,该视图的脚本必须在一个单独的文件中,这意味着一个独立的请求。我希望能够像使用Razor一样将脚本直接添加到视图中,并且仍然在主体底部进行渲染。Phalcon允许你这样做吗?
是的,您可以使用Partials:
<?php $this->partial("partials/js/whatever") ?>
其中js/whatever
是views/partials/js/whatever.phtml
中的php模板文件。
你也可以使用Volt模板引擎并做同样的事情:
{{ partial('partials/js/whatever') }}
或使用包括:
{% include "partials/js/whatever" %}
在Volt中,您还可以使用[Blocks][3],在那里您可以在主模板文件中定义主布局的部分(如footer
),在每个视图文件中您可以定义应该放置的内容。
{# templates/base.volt #}
<!DOCTYPE html>
<html>
<head>
<title>My Page</title>
</head>
<body>
<div id="content">{% block content %}{% endblock %}</div>
<div id="footer">
{% block footer %}{% endblock %}
</div>
</body>
</html>
在视图中:
{% extends "templates/base.volt" %}
{% block content %}
<h1>My page</h1>
{% endblock %}
{% block footer %}{{ partial('partials/js/whatever') }}{% endblock %}
正如我所写的,这是为Phalcon的Volt模板引擎,但如果你使用的是普通的PHP,那么我不知道类似的解决方案。您可以创建一个简单的服务,收集到控制器中模板的链接,然后将它们作为部分输出到主模板中。
相关文章:
- 使用javascript的Asp.net内容占位符
- Internet Explorer缺少占位符支持,特别是密码字段
- 如何隐藏按钮单击事件上的占位符
- 需要URL模板占位符查找和替换功能的输入
- 初始化ng模型时,Angular ui选择占位符不起作用
- 如何在ie7或更高版本中设置密码字段的占位符
- 在不使用javascript的情况下,可以在表单字段中设置文本占位符(以提示最终用户插入特定格式)
- Select2-使用自定义模板时不显示占位符
- 替换字符串中的占位符值
- 为什么我应该使用HTML5(上下文:占位符)
- 在contentEditable元素中居中占位符插入符号
- 从气球弹出窗口中删除占位符
- 选择“选项”时更改输入的占位符
- 错误:ReCAPTCHA占位符元素必须为空
- 如何更改文本区域的颜色's文本,具体取决于它是否为占位符
- 得到一个没有属性的错误“;占位符”;在xhtml strict 1.0中
- 使用Node/Javascript提取字符串中的所有占位符
- 更改 html 输入字段中的占位符属性
- 当用户在输入字段事件中输入内容时,为该字段事件添加动画占位符
- Phalcon中的占位符