2017-01-31 67 views
0

我想通过使用此框架/ CMS:10月CMS来制作应用程序。我正在阅读documentation,我找不到我想要完成的任务;它说:PHP框架:OctoberCMS - 变量范围混乱

{%set%}标记可用于设置模板内的变量。

{%集activePage =“博客”%}

我想添加一个可选的部分,或在默认情况下将其添加在布局如果一个变量是在主页真。在Blade模板中,只能使用@yield('partial'),如果不这样做,就不会在Twig模板中引发异常。所以,我做了以下内容:

版式.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 

这个伟大的工程...任何想法?提前致谢。

回答

0

{% set variableName = 'data' %}是上下文特定的,即,该变量将只上下文中存在该它被设置,除非你按照Pierre-André的建议将它传递给另一个环境。

就你而言,你希望在你的页面中访问该变量,而不是局部变量,所以你需要将变量添加到Twig渲染上下文本身,而不仅仅是你的布局上下文。为此,您需要使用模板的PHP Section将变量添加到Twig上下文中。

url = "/blog" 
layout = "default" 
== 
<? 
function onStart() 
{ 
    $this['flipbook'] = true; 
} 
?> 

的替代这一切将是你的功能捆绑成一个plugin component,然后只需添加到任何页面都需要它该组件。