首页 文章

Builder插件通过partial设置标识符值

提问于
浏览
0

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

在我创建的插件学校中,我有教师(设置为我单独创建的教师插件的关系) . 可以有多个教师,因此它们作为数组存储在数据库中 . 像这样:

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

数字表示教师表的行ID

在我的CMS中,我可以将所有学校信息完全拉到部分(Builder详细信息),并且可以拉出教师数组,但我正在努力将这个数组传递给查找ID并获取教师信息 . 我现在的想法是把它发送到另一个部分,如:

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

部分学校/教师正在获得身份证 . 我已经包含了Builder Details组件并使用以下内容进行设置:

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

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

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

仍在学习十月,所以任何帮助都表示赞赏 .

1 回答

  • 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);
    }
    

    这允许我将我的组件放在partial中,并使用变量'insProfile'请求partial . 组件将在页面/插件生成之前获取属性insProfile并使用该变量而不是默认值 .

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

    如果构建器插件组件可以以这样的方式更新,我不必这样做,因为构建器插件开箱即用,这将是很好的 .

    发布此以防其他人出现此问题,并且不确定将部分变量传递到组件的位置/方式 .

相关问题