OctoberCMS。如何将变量从页面传递到组件?

时间:2018-01-10 05:39:23

标签: php laravel octobercms

我在页面中定义了一个变量:

{% set service = builderDetails.record  %} 

我希望将此变量传递给组件:

{% component 'Variations' service=service %} 

但此方法不起作用。我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

我猜你需要将builderDetails.record传递给component 'Variations'

然后您想要访问component 'Variations'的{​​{1}}中的变量并显示一些有关它的详细信息。

为此您需要使用组件的default.htm方法

onRender

component 'Variations'

public function onRender() { $this->page['record'] = $this->page->components['builderDetails']->record; } 将页面中的所有可用组件保存为数组。

$this->page->components是组件builderDetails(Builder插件)的别名,它被添加到页面中。

现在位于Record Details

您可以访问default.htm变量并根据需要使用

record
  

我们假设您的记录具有属性{{ record.name }}

如果您需要什么,请发表评论。

答案 1 :(得分:0)

在Twig .htm部分

<div class="sidebar-widget">
   {% component "postBlock" score=55 name="Johan" %}
   <div class="nonsense meta">
       {% partial 'nonsense' score=75 name="Marga" %}
   </div>
</div>

废话树枝中,该树枝是先前的.htm部分

的子代
<div class="sidebar-element">
   <div>My name is: {{ name|default('John Doe') }}</div>
   <div>My score is: {{ score|default('No score') }}</div>
</div>

在组件 postBlock 中, onRender 函数

function onRender() {
   $score = $this->property('score');  // 55
   $name = $this->property('name'); // Johan
}

要从父枝传递到子枝,您不必使用 onRender 函数 在组件中,只有当您要修改事物并将其传递到那里时,该分支才会出现。

答案 2 :(得分:0)

您不必将其分配给页面。您可以通过以下方式访问它:

__SELF__.property('property_name')

在组件中定义属性之后:

{% component 'Variations' service=service %}

在你的组件 default.htm

{{__SELF__.property('service')}}