2017-01-31 4 views
0

私はこのフレームワーク/ CMS:October CMSを使用してアプリケーションを作ろうとしています。私はdocumentationを読んでいて、私は達成したいものを見つけることができません。それは言う:PHPフレームワーク:OctoberCMS - 可変スコープの混乱

{%set%}タグは、テンプレート内の変数を設定するために使用することができます。

{%セットにActivePage =「ブログ」%}

私は、オプションの部分を追加したい、または変数はホームページでtrueの場合、デフォルトでレイアウトにそれを追加します。 Bladeのテンプレートでは、ちょうど@yield('partial')を使用することができ、そうしないと、例外がスローされません。テンプレートのテンプレートには例外があります。だから私は、次のことをやった:そのレイアウトを使用しているhome.htm

{% set flipbook = true %} 
... some code 

layout.htmファイルで

{% if flipbook %} 
    {% partial 'partial' %} 
{% endif %} 
... some code 

問題:部分は含まれておらず、同じ変数スコープ内にない変数を参照しています。私は範囲を指していることも知っています。私は同じようなことをやろうとしています。

{% set flipbook = true %} 
{% if flipbook %} 
    {% partial 'partial' %} 
{% endif %} 
... some code 

これは素晴らしいことです。前もって感謝します。

答えて

1

解決策は、部分的に変数を渡すことです。 OctoberCMSのドキュメントを参照してください。部分的内部https://octobercms.com/docs/cms/partials#partial-variables

{% partial "partial" flipbook=flipbook %} 

を、変数は、他のマークアップ 変数のようにアクセスすることができます。

<p>Name: {{ flipbook.name }}</p> 
0

{% set variableName = 'data' %}その変数が唯一そのコンテキスト内に存在します。すなわち、コンテキスト固有でありますそれはPierre-Andréが提案した別のコンテキストに渡さない限り設定されます。

あなたの場合は、ページ内の変数にアクセスする必要があります。部分的ではないので、レイアウトのコンテキストだけでなく、変数をTwigレンダリングコンテキスト自体に追加することができます。これを行うには、変数をTwigコンテキストに追加するためにテンプレートのPHP Sectionを使用する必要があります。

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

すべてこれに代わるものはplugin componentにあなたの機能をバンドルすること、その後、それを必要とするものは何でもページにそのコンポーネントを追加します。