PHP框架:OctoberCMS-变量范围混淆
我正在尝试使用这个框架/CMS制作一个应用程序:10月CMS。我在看报纸,但我找不到我想要完成的事情;它说: {%set%}标记可用于在模板内设置变量 {%设置activePage='blog'%} 我想添加一个可选部分,或者如果主页中的变量为true,则默认情况下在布局中添加它。在刀片模板中,您可以只使用PHP框架:OctoberCMS-变量范围混淆,php,variables,scope,twig,octobercms,Php,Variables,Scope,Twig,Octobercms,我正在尝试使用这个框架/CMS制作一个应用程序:10月CMS。我在看报纸,但我找不到我想要完成的事情;它说: {%set%}标记可用于在模板内设置变量 {%设置activePage='blog'%} 我想添加一个可选部分,或者如果主页中的变量为true,则默认情况下在布局中添加它。在刀片模板中,您可以只使用@yield('partial'),不这样做不会引发异常,而在细枝模板中则会引发异常。因此,我做了以下工作: 在layout.htm文件中: {% set flipbook = true %}
@yield('partial')
,不这样做不会引发异常,而在细枝模板中则会引发异常。因此,我做了以下工作:
在layout.htm文件中:
{% set flipbook = true %}
... some code
在使用该布局的home.htm中:
{% if flipbook %}
{% partial 'partial' %}
{% endif %}
... some code
问题:部分不包括在内,它指的是不在同一变量范围内的变量。我知道这指的是范围,因为我也尝试过这样做:
{% set flipbook = true %}
{% if flipbook %}
{% partial 'partial' %}
{% endif %}
... some code
这很有效。有什么想法吗?一个解决方案是将变量传递给您的分部函数。参见OctoberCMS文档: 在partial中,可以像访问任何其他标记一样访问变量 变量:
<p>Name: {{ flipbook.name }}</p>
名称:{{flipbook.Name}
解决方案是将变量传递给您的分部函数。参见OctoberCMS文档:
在partial中,可以像访问任何其他标记一样访问变量
变量:
<p>Name: {{ flipbook.name }}</p>
名称:{{flipbook.Name}
{%set variableName='数据'%}
是特定于上下文的,即该变量将仅存在于其设置的上下文中,除非您按照Pierre André的建议将其传递给另一个上下文
在您的情况下,您希望能够访问页面中的该变量,而不是部分变量,因此您希望将该变量添加到细枝渲染上下文本身,而不仅仅是布局的上下文。要做到这一点,您需要使用模板的将变量添加到细枝上下文中
url = "/blog"
layout = "default"
==
<?
function onStart()
{
$this['flipbook'] = true;
}
?>
url=“/blog”
布局=“默认”
==
一种替代方法是将您的功能捆绑到一个组件中,然后只需将该组件添加到任何需要它的页面中。
{%set variableName='data%}
是特定于上下文的,即该变量将只存在于其设置的上下文中,除非你像皮埃尔·安德烈所建议的那样把它转移到另一个语境中
在您的情况下,您希望能够访问页面中的该变量,而不是部分变量,因此您希望将该变量添加到细枝渲染上下文本身,而不仅仅是布局的上下文。要做到这一点,您需要使用模板的将变量添加到细枝上下文中
url = "/blog"
layout = "default"
==
<?
function onStart()
{
$this['flipbook'] = true;
}
?>
url=“/blog”
布局=“默认”
==
一种替代方法是将您的功能捆绑到一个组件中,然后只需将该组件添加到任何需要它的页面中