Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP框架:OctoberCMS-变量范围混淆_Php_Variables_Scope_Twig_Octobercms - Fatal编程技术网

PHP框架:OctoberCMS-变量范围混淆

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 %}

我正在尝试使用这个框架/CMS制作一个应用程序:10月CMS。我在看报纸,但我找不到我想要完成的事情;它说:

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

{%设置activePage='blog'%}

我想添加一个可选部分,或者如果主页中的变量为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”
布局=“默认”
==
一种替代方法是将您的功能捆绑到一个组件中,然后只需将该组件添加到任何需要它的页面中