首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >OctoberCMS:如何在不知道组件名称的情况下使用组件的函数

OctoberCMS:如何在不知道组件名称的情况下使用组件的函数
EN

Stack Overflow用户
提问于 2017-10-26 17:56:23
回答 2查看 1.3K关注 0票数 0

在OctoberCMS中,我想简单地通过附加不同的插件组件来更改页面进程。

我有一个插件组件(makeform),它插入一个表单(在数据库表中定义)。

单击表单的submit按钮将调用调用process()onSubmit()

process()是在另一个插件组件中定义的函数。

我可以在不知道其他插件或其组件的名称的情况下从process()内部调用makeform吗?也就是说,不需要use 'Acme\Plugin\Components\ProcessForm', 'processForm';

(二)或者,我是否可以编程地发现另一个附加组件的名称和它的插件,然后以某种方式指定它是process()函数?

或者是使用静态properties下拉列表来选择哪个进程,然后动态地添加组件。总是假设我可以超越$this->addComponent('Acme\Plugin\Components\ProcessForm', 'processForm'); init()

编辑:试验

我希望动态的addComponent()

无论我在哪里放置它,无论是在init()中还是在其他地方,我都会得到错误:

未为组件"Acme\Plugin\Components\ProcessForm“注册类名。检查组件插件。

即使我没有使用其中的一个类。

许多网上引用了这条错误信息,但对我没有帮助。

编辑:进一步解释

(希望)对我正在努力实现的目标作一个简化的解释。

本质上,我设想一个由一串组件组成的页面过程。

每个组件在下一个组件中调用一个函数,直到进程结束。

可以简单地通过替换组件来修改整个过程。

我猜想连接组件的唯一方法是标准化函数名。所以这个(可能?)要求组件属于流程的特定阶段,但如果每个组件都能在任何阶段(在适当的情况下)适合,则是理想的。

插图

EN

回答 2

Stack Overflow用户

发布于 2017-10-27 02:12:41

我认为最好的方法是定义另一个属性,在其中设置插件的命名空间。

代码语言:javascript
运行
AI代码解释
复制
public function defineProperties(){
  'pluginName' => [
    'label' => 'Plugin Namespace to call process method from',
    'type' => 'text'
  ]
}

--

代码语言:javascript
运行
AI代码解释
复制
public function onSubmit(){
  $plugin = $this->property('pluginName');
  $plugin::process($formData);
}

通过这种方式,您可以保持组件逻辑不受任何硬编码插件名称的影响。

编辑: 30/10/17

我不确定是否有办法列出应用程序中的所有可用组件。另一种方法是设置一个Settings页面,其中包含一个repeater,在该页面中,可以使用名称空间声明所有可用的组件。

您可以将其解析为onSubmit方法中的数组,并将其返回给下拉列表。

代码语言:javascript
运行
AI代码解释
复制
public function defineProperties(){
  'components' => [
    'label' => 'Plugin Namespace to call process method from',
    'type' => 'dropdown',
    'options' => 'getComponentsOptions' // optional but easier to understand
  ]
}

public function getComponentsOptions(){
  $components = Settings::get('components');
  $options = [];

  foreach ($components as $component)
  {
    $options[$component['namespace']] = $component['name'];
  }

  return $options;
}

/模型/设置/字段s.yaml

代码语言:javascript
运行
AI代码解释
复制
fields:
    components:
        type: repeater
        form:
            fields:
                name:
                    placeholder: My Component Name
                    span: left
                namespace:
                    placeholder: Acme\Name\Components\MyComponent;
                    span: right

/Models/Settings.php

代码语言:javascript
运行
AI代码解释
复制
class Settings extends Model
{
    public $implement = ['System.Behaviors.SettingsModel'];
    // A unique code
    public $settingsCode = 'acme_name_settings';
    // Reference to field configuration
    public $settingsFields = 'fields.yaml';
}

http://octobercms.com/docs/plugin/settings#introduction

票数 0
EN

Stack Overflow用户

发布于 2017-10-28 19:18:26

  1. 扩展基本组件类,并添加您的函数,并让组件从此扩展?
  2. 使用函数创建一个新的助手类,可能称为静态的
  3. 添加一个全局函数https://octobercms.com/forum/post/global-php-classesfunctions
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46966374

复制
相关文章
关联容器
之前介绍过标准库中的顺序容器,顺序容器是元素在内存中按照一定顺序进行排列的,都是按线性结构进行排列。除了顺序容器外,c++中还有关联容器。与顺序容器不同的是,关联容器中元素是按照关键字来保存和访问的。与之相对的顺序容器是按它们在容器中的位置来顺序的保存和访问的。
Masimaro
2021/05/18
7260
关联容器小结
关联容器和顺序容器的根本不同之处在于,关联容器中的元素是按关键字来保存和访问的(比如map和set),而顺序容器中的元素是按照在容器中的位置来顺序保存和访问的(比如vector和string)。
Enterprise_
2019/11/12
4800
画出最佳分组的生存曲线
做生存分析,Best separation和Median separation,后者很简单,很想学前者,这次带来的是最佳分组的曲线代码。
生信喵实验柴
2023/09/06
3600
画出最佳分组的生存曲线
第 11 章 关联容器
第 11 章 关联容器 标签: C++Primer 学习记录 关联容器 ---- 第 11 章 关联容器 11.1 使用关联容器 11.2 关联容器概述 11.3 关联容器操作 11.4 无序容器 ---- 11.1 使用关联容器 标准库中定义了 8个关联容器,这些容器的不同体现在三个维度上。 或者是一个 set,或者是一个 map。 或者要求不重复的关键字,或者允许重复关键字,允许重复的容器的名字中都包含单词 multi。 或者按顺序保存元素或无序保存。不保持关键字按顺序存储的容器的名字都以 unord
用户1653704
2018/06/07
5680
关联式容器set和map
序列式容器:vector,list,deque,forward_lsit都是序列式容器,因为它们的底层都是线性序列的数据结构,存放的是元素本身。
始终学不会
2023/10/17
2250
关联式容器set和map
【STL】关联容器 — hash_set
容器hash_set是以hash table为底层机制的,差点儿所有的操作都是转调用hash table提供的接口。因为插入无法存储同样的键值,所以hash_set的插入操作所有都使用hash table的insert_unique接口,代码例如以下:
全栈程序员站长
2022/07/13
1880
【STL】关联容器 — hash_set
[入门] Docker将nginx容器和php容器关联起来
首先是在菜鸟教程里看的教程,里面把各种镜像、容器的概念和基本操作都说了。但是每一步都直到怎么测试运行起来。
宣言言言
2019/12/15
3.2K0
STL关联容器-红黑树
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/details/80877064
bear_fish
2018/09/14
5460
STL关联容器-红黑树
寻找生存分析的最佳基因表达分组阈值
文字版是: Based on the FPKM value of each gene, we classified the patients into two groups and examined
生信技能树
2019/05/17
1.5K0
规模化运行容器时的最佳数据存储路径
K8s和其他容器编排平台正在迅速下沉到主流的基础设置中,对于大多数面向业务的应用,从传统的数据中心迁移到容器部署还算独立和简单。然而,当遇到需要像数据库或快速数据分析工作负载这样要求更高的核心应用时,事情不那么简单了。
灵雀云
2022/06/06
5700
规模化运行容器时的最佳数据存储路径
数据分组
数据分组就是根据一个或多个键(可以是函数、数组或df列名)将数据分成若干组,然后对分组后的数据分别进行汇总计算,并将汇总计算后的结果合并,被用作汇总计算的函数称为就聚合函数。 Python中对数据分组利用的是 groupby() 方法,类似于sql中的 groupby。 1.分组键是列名 分组键是列名时直接将某一列或多列的列名传给 groupby() 方法,groupby() 方法就会按照这一列或多列进行分组。 groupby(): """ 功能: 根据分组键将数据分成
见贤思齊
2020/08/05
4.6K0
STL之关联式容器map(一)
map<K,T> 类模板:定义了一个保存 T 类型对象的 map,每个 T 类型的对象都有一个关联的 K 类型的键。容器内对象的位置是通过比较键决定的,唯一的要求是键必须可以用 less<K> 比或用自己指定的另一个函数对象来替代。
用户9831583
2022/06/16
3880
STL之关联式容器map(一)
C++primer笔记之关联容器
在这一章中,有以下的几点收获: 1、pair类型的使用相当频繁,如果需要定义多个相同的pair类型对象,可考虑利用typedef简化其声明: typedef pair<string, string> A;这样,在后面的使用中就可以直接用A来代替前面繁琐的书写。 2、三种方法创建pair对象: (1)第一种方法:使用函数make_pair() pair<string, string> spair; string first, last; while(cin >> first >> last) {   spai
Linux云计算网络
2018/01/10
6920
C++primer笔记之关联容器
STL之关联式容器map(二)
成员函数 emplace() 和 insert() 返回的 pair 对象提供的指示相同。pair 的成员变量 first 是一个指向插入元素或阻止插入的元素的迭代器;成员变量 second 是个布尔值,如果元素插入成功,second 就为 true。
用户9831583
2022/06/16
5740
STL之关联式容器map(二)
块存储、对象存储、文件存储, 容器存储的最佳方式应该是什么?
容器的无状态临时存储是一个很好的特性。从镜像启动一个容器,修改,停止,然后重新启动一个容器。一个全新的跟镜像一模一样的容器回来了。
焱融科技
2020/02/28
4.6K0
块存储、对象存储、文件存储, 容器存储的最佳方式应该是什么?
VSCode关联Laradock 容器配置PHPCS插件
本文主要记录如何在 VSCode 关联 Laradock 容器,配置和使用容器的 PHP 环境和一些插件,如:phpcs。
coding01
2021/01/18
1.5K0
【说站】mysql分组查询是什么
以上就是mysql分组查询的介绍,希望对大家有所帮助。更多编程基础知识学习:python学习网
很酷的站长
2022/11/23
9760
docker容器入门最佳教程
容器技术是继大数据和云计算之后又一炙手可热的技术,而且未来相当一段时间内都会非常流行。
sunsky
2020/08/20
6910
docker容器入门最佳教程
容器安全最佳实践入门
保证容器安全是一项复杂的任务。这个问题域很广,面对大量的检查清单和最佳实践,你很难确定采用哪个解决方案。所以,如果你要实现容器安全策略,应该从哪里开始呢?
深度学习与Python
2021/01/20
6720
点击加载更多

相似问题

欧几里德距离vs皮尔逊相关性vs余弦相似度?

312

文档间相似性(余弦相似性)

13

文本(余弦)相似性

110

Python,余弦相似与调整余弦相似

11

调整后的余弦相似性不能正常工作

110
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档