October CMS - 如何获取组件 (__SELF__) 的属性?
October CMS - How to get properties of component (__SELF__)?
我在尝试提取组件中函数 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:
表单组件
别名:独立
标题:
类型:独立
单位成本: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>£{{ __SELF__ }}</p>
<button type="submit">Add to Basket</button>
以上语句 {{ SELF }} 为两个用户输入的别名值生成引用。当我尝试访问 SELF 上的其他属性时,例如 {{ SELF.alias }} 和 {{ SELF.id }} 这些包含相关详细信息。只有当我尝试访问下面的自定义属性时,我才得到空白:
{{ SELF.type }} - 空白
{{ SELF.unitCost }} - 空白
有人能帮忙吗?
__SELF__
让您可以访问该组件的组件对象 (class)。因此,当您访问 {{ __SELF__.alias }}
或 {{ __SELF__.id }}
时,您正在访问对象属性(即它基本上等同于调用 (new MyComponent)->alias
.
由于您没有将 type
和 unitCost
定义为组件的 PHP 对象属性,因此您无法通过 {{ __SELF__.type }}
或 {{ __SELF__.unitCost }}
访问它们。为了在 Twig 中访问它们,您可以调用 returns 它们的值 (property()
):
的组件对象方法
{{ __SELF__.property('type') }}
或者您可以让您的组件 class 将这些配置级别属性定义为 PHP 对象/class 级别属性,如下所示:
public function init() {
$this->type = $this->property('type');
$this->unitCost = $this->property('unitCost');
}
然后您将能够以{{ __SELF__.type }}
的形式访问数据
有关该主题的更多信息,请参阅 http://octobercms.com/docs/plugin/components#component-properties。
我在尝试提取组件中函数 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:
表单组件
别名:独立
标题:
类型:独立
单位成本: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>£{{ __SELF__ }}</p>
<button type="submit">Add to Basket</button>
以上语句 {{ SELF }} 为两个用户输入的别名值生成引用。当我尝试访问 SELF 上的其他属性时,例如 {{ SELF.alias }} 和 {{ SELF.id }} 这些包含相关详细信息。只有当我尝试访问下面的自定义属性时,我才得到空白:
{{ SELF.type }} - 空白
{{ SELF.unitCost }} - 空白
有人能帮忙吗?
__SELF__
让您可以访问该组件的组件对象 (class)。因此,当您访问 {{ __SELF__.alias }}
或 {{ __SELF__.id }}
时,您正在访问对象属性(即它基本上等同于调用 (new MyComponent)->alias
.
由于您没有将 type
和 unitCost
定义为组件的 PHP 对象属性,因此您无法通过 {{ __SELF__.type }}
或 {{ __SELF__.unitCost }}
访问它们。为了在 Twig 中访问它们,您可以调用 returns 它们的值 (property()
):
{{ __SELF__.property('type') }}
或者您可以让您的组件 class 将这些配置级别属性定义为 PHP 对象/class 级别属性,如下所示:
public function init() {
$this->type = $this->property('type');
$this->unitCost = $this->property('unitCost');
}
然后您将能够以{{ __SELF__.type }}
有关该主题的更多信息,请参阅 http://octobercms.com/docs/plugin/components#component-properties。