我一直在互联网上搜索此内容,但找不到任何与此相关的内容。
我正在创建一个简单的树枝模板,该模板将在多个位置使用,但需要一些变量。
我希望能够做这样的事情:
{% if some_variable is not defined %}
<h1>Some variable was not defined.<h1>
-- stop rendering the rest of the template --
{% endif %}
{{ some_variable }} is defined here.
Run Code Online (Sandbox Code Playgroud)
我问这个的原因其实很简单。我不希望我的整个模板在一个或多个语句中缩进if,因为它很容易使整个文件变得混乱。
我知道解决方法是创建多个模板,但对于一个简单的条件使用多个文件对我来说听起来有点矫枉过正。
如果这本身不存在,如果有人可以告诉我如何实现以及是否可以实现这一点,我可以为此创建一个扩展。
提前致谢!
PS 不要回答{% else %},这正是我在这里试图避免的事情......
我可能遗漏了一些初衷,但我发现通过使用我称为的模板函数扩展 Twig 可以轻松实现这一点cancel
public function cancel($msg = '') {
throw new Twig\Error\Error("Process cancelled with msg: $msg");
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它只是抛出一个异常。在模板之外,这会被捕获并处理。
在模板中我这样写:
{{ cancel('My reason for cancelling') }}
Run Code Online (Sandbox Code Playgroud)
而且,据我从测试中可以看出,模板处理到此为止。
要添加扩展程序,请遵循正常程序。
| 归档时间: |
|
| 查看次数: |
8476 次 |
| 最近记录: |