【问题标题】:Builder Plugin set identifier value through partialBuilder Plugin 通过部分设置标识符值
【发布时间】:2018-07-19 01:55:29
【问题描述】:

我正在尝试使用我通过记录详细信息组件使用构建器插件设置的输出数据并遇到一些问题。

在我创建的插件学校中,我有讲师(设置为与我单独创建的讲师插件的关系)。可能有多个讲师,因此他们以数组的形式存储在数据库中。像这样:

[{"instructor":"69"},{"instructor":"79"},{"instructor":"80"},{"instructor":"96"}]

数字代表instructor表的行ID

在我的 CMS 中,我可以将所有学校信息很好地提取到部分(生成器详细信息)中,并且可以提取讲师数组,但我很难将这个数组传递给查找 ID 并获取讲师信息。我现在的想法是像这样将它发送到另一个部分:

{% "school/instructor" insProfile = instructorID %}

部分学校/教师获得 ID 就好了。我已经包含了 Builder Details 组件并使用以下内容进行了设置:

Alias: builderDetails
ModelClass: Instructors Plugin
Identifier value: insProfile 
Key Column: id 
Display Column: member_name

我得到记录未找到的结果。我对如何设置标识符值以匹配我通过部分传递的值感到困惑。在 {% set record = ... %} 运行之前,我尝试了 {% set identifierValue = insProfile %},但这也不起作用。

我不能使用 :slug,因为它已经生成了 School 页面所需的内容。在 TLDR 中,我似乎最终想通过另一个部分和不同的标签来复制这个功能。

仍在学习 10 月,因此感谢您提供任何帮助。

【问题讨论】:

  • 我应该评论说我不会通过单个部分发送整个讲师阵列。相反,我在 for 循环中启动了数组,并使用该部分来加载每个讲师配置文件。这样,部分讲师可以专注于一次生成一组数据。
  • 你能分享你所有的代码吗?看来builderDetailsRecordDetails 组件是对的,你想将id 值传递给它以显示记录详细信息吗?
  • 'builderDetails' 是组件'builderDetails'。

标签: builder octobercms


【解决方案1】:

我认为原始帖子有点冗长,最终我想做的是将变量传递给组件。如:

{% component 'builderDetails' identifierValue=dynamicVar %}

这似乎不起作用,因为构建器详细信息组件生成的页面加载太远而无法获取变量更改。

根据 OctoberCMS 文档,对我来说最好的解决方案是创建自己的组件,该组件将在使用 onRender() 函数处理页面之前接受变量。

    public function onRender()
{
    // This code will be executed before the default component
    // markup is rendered on the page or layout.
    $this->profileID = $this->property('insProfile');
    $this->ins = $this->getUserInfo($this->profileID);
}  

这允许我将我的组件放在一个部分中,并使用变量“insProfile”请求部分。该组件将在页面/插件生成之前获取属性 insProfile 并使用该变量而不是默认值。

然后我设置另一个函数来查询所需的正确用户信息 (getUserInfo)

如果构建器插件组件能够以我不必这样做的方式进行更新,那就太好了,因为构建器插件相当广泛,开箱即用。

发布这个以防其他人遇到这个问题并且不确定在哪里/如何将部分变量传递给组件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    相关资源
    最近更新 更多