将 Viewbag 变量从主题设置传递给组件
Passing Viewbag variable to Component from Theme settings
在 Octobercms 主题设置上,我使用了一个 yaml 文件:
product_count:
label: Number
type: number
span: left
tab: Index
default: 3
在 index.htm 页面上,我使用别名 featuredProducts
的部分 featuredProducts
组件
在组件 featuredProducts
viewBag 上我使用这个变量:
perPage = "{{ product_count }}"
我尝试将主题设置 yaml 文件中的变量 product_count
传递给组件 viewBag,但没有成功。知道怎么做吗?
您需要使用组件的 property
功能和 onRender()
方法。
Page's markup section
{% component 'featuredProducts' perPage=this.theme.product_count %}
Component's onRender()
method: make sure to use onRender()
method as props will be available there.
public function onRender() {
// with default value of 3, if theme value is not already set
$perPage = $this->property('perPage', 3);
// now use $perPage to fetch records
$this->page['items'] = SomeModel::limit($perPage)->get();
// items will be available in markup for use
}
如有疑问请评论。
在 Octobercms 主题设置上,我使用了一个 yaml 文件:
product_count:
label: Number
type: number
span: left
tab: Index
default: 3
在 index.htm 页面上,我使用别名 featuredProducts
featuredProducts
组件
在组件 featuredProducts
viewBag 上我使用这个变量:
perPage = "{{ product_count }}"
我尝试将主题设置 yaml 文件中的变量 product_count
传递给组件 viewBag,但没有成功。知道怎么做吗?
您需要使用组件的 property
功能和 onRender()
方法。
Page's markup section
{% component 'featuredProducts' perPage=this.theme.product_count %}
Component's
onRender()
method: make sure to useonRender()
method as props will be available there.
public function onRender() {
// with default value of 3, if theme value is not already set
$perPage = $this->property('perPage', 3);
// now use $perPage to fetch records
$this->page['items'] = SomeModel::limit($perPage)->get();
// items will be available in markup for use
}
如有疑问请评论。