Builder Plugin 通过 partial 设置标识符值

Builder Plugin set identifier value through partial

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

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

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

数字代表讲师的行号table

在我的 CMS 中,我可以将所有学校信息很好地提取到部分信息(构建器详细信息)中,并且可以提取教师数组,但我正在努力将此数组传递过来以查找 ID 并获取导师信息。我现在的想法是像这样将它发送到另一个部分:

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

部分 school/instructor 可以很好地获取 ID。我已经包含了 Builder Details 组件并使用以下内容进行设置:

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

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

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

10 月还在学习,非常感谢您的帮助。

我认为原来的 post 有点冗长,最终我想做的是将一个变量传递到一个组件中。如:

{% 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' 请求部分。该组件将在 page/plugin 生成并使用该变量而不是默认变量之前获取 属性 insProfile。

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

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

张贴这个以防其他人遇到这个问题并且不确定where/how将部分变量传递到组件中。