十月CMS - 如何获取组件的属性(__SELF__)?

时间:2017-02-28 14:53:07

标签: octobercms

我在尝试提取组件中函数defineProperties()中设置的属性值时遇到了一些小问题。

我在页面上包含插件的两个实例时添加了一些属性值。这是一个简短的属性列表,为我的问题提供了一些背景信息。

defineProperties() {
return [
    'title' => [ 'title' =>'Title' ],
    'type'  => [ 
        'title'     => 'Type',
        'type'      => 'dropdown',
        'default'   => 'standalone',
        'placeholder'   => 'Select type',
        'options' => [
            'standalone'    => 'Standalone',
            'networked' => 'Networked'
        ]
    ],
    'unitCost'  => [
        'title'     => 'Unit Cost',
        'default'   => '130.00'
    ]

...

属性设置为:

实例1:

表单组件

Alias:standalone

名称:

类型:独立

单位成本:5.00

实例2:

表单组件

别名:网络

名称:

输入:网络

单位成本:10.00

以上内容已附加到/ plans页面

插件components / form / default.html包含以下内容(两个实例直接使用它,即不分叉)

No. of Licenses
<input id="licenseQty" name="licenseQty" type="text" placeholder="1">

<label>Support Plans</label>
<select id="supportPlan" name="supportPlan">
    <option value="1">1 Year (included)</option>
    <option value="2">3 Years</option>
</select>
<label>Total:</label>
<p>&pound;{{ __SELF__ }}</p>
<button type="submit">Add to Basket</button>

上述语句{{SELF}}为两个用户输入的Alias值生成引用。当我尝试访问SELF上的其他属性时,例如{{SELF.alias}}和{{SELF.id}},这些都保留了相关的详细信息。只有当我尝试访问下面的自定义属性时,我才会得到空白:

{{SELF.type}} - 空白

{{SELF.unitCost}} - 空白

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

__SELF__让您可以访问该组件的Component对象(类)。因此,当您访问{{ __SELF__.alias }}{{ __SELF__.id }}时,您正在访问对象属性(即它基本上等同于调用(new MyComponent)->alias

由于您尚未将typeunitCost定义为组件的PHP对象属性,因此无法通过{{ __SELF__.type }}{{ __SELF__.unitCost }}访问它们。要在Twig中访问它们,您可以调用返回其值(property())的组件对象方法:

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

或者您可以让Component类将这些配置级属性定义为PHP对象/类级属性,如下所示:

public function init() {
    $this->type = $this->property('type');
    $this->unitCost = $this->property('unitCost');
}

然后您就可以{{ __SELF__.type }}

的形式访问数据

有关该主题的更多信息,请参阅http://octobercms.com/docs/plugin/components#component-properties