【发布时间】:2018-04-08 13:08:35
【问题描述】:
在 OctoberCMS 中,我想简单地通过附加不同的插件组件来更改页面进程。
我有一个插件组件 (makeform),它插入一个表单(在数据库表中定义)。
单击表单的submit 按钮调用onSubmit(),后者调用process()。process() 是另一个插件组件中定义的函数。
i) 我可以在不知道其他插件或其组件名称的情况下从makeform 中调用process() 吗?也就是不用use 'Acme\Plugin\Components\ProcessForm', 'processForm';
ii) 或者,我能否以编程方式发现另一个附加组件的名称及其插件,然后以某种方式指定它的 process() 函数?
iii) 或者是使用静态properties 下拉列表选择哪个进程,然后动态添加组件的情况。总是假设我可以$this->addComponent('Acme\Plugin\Components\ProcessForm', 'processForm'); 超越init()。
编辑:实验
我希望动态addComponent()。
无论我把它放在哪里,init() 或其他地方,我都会收到错误消息:
没有为组件“Acme\Plugin\Components\ProcessForm”注册类名。检查组件插件。
即使我没有使用其中一个类。
许多在线引用此错误消息,但没有一个对我有帮助。
编辑:进一步解释
对我想要实现的目标的(希望)简化解释。
本质上,我想象一个由一串组件组成的页面进程。
每个组件调用下一个组件中的一个函数,直到流程结束。
只需更换组件即可修改整个流程。
我猜想连接组件的唯一方法是标准化函数名称。因此,这(可能?)要求组件属于流程的特定阶段,尽管如果它们中的每一个都可以适应任何阶段(在适当的情况下),那将是理想的。
【问题讨论】:
-
再次感谢@peter-haberkorn。我在搜索中遇到了这个问题,但不明白如何使用
addComponent:我只是收到我的问题中引用的错误消息。它确实看起来像我正在寻找的优雅解决方案。
标签: laravel octobercms