加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用Laravel / PHP创建基于插件的系统,如WordPress

发布时间:2020-12-14 19:45:16 所属栏目:大数据 来源:网络整理
导读:这个问题一直困扰着我很长一段时间,我想创建一个cms,一个更具体的学校管理系统,对我来说最重要的是,以管理员可以下载的方式制作这个系统插件并通过他们的管理面板安装插件,就像wordpress一样. 现在我已经阅读了有关wordpress Hooks,Actions和Filters的内容,
这个问题一直困扰着我很长一段时间,我想创建一个cms,一个更具体的学校管理系统,对我来说最重要的是,以管理员可以下载的方式制作这个系统插件并通过他们的管理面板安装插件,就像wordpress一样.

现在我已经阅读了有关wordpress Hooks,Actions和Filters的内容,而且说实话,我可以说我只是熟悉它们的功能,但是将相同的功能应用到Laravel应用程序……,这有点难以理解出来,至少对我而言.

我也搜索了这个问题,发现几乎每个人都在推荐软件包,但是虽然软件包对于想要使用软件包功能的其他开发人员来说非常有用,但是不熟悉任何软件包的用户都无法轻松安装软件包.编程语言,这正是我在我的应用程序中想要的.

到目前为止,我在脑海中的想法,如在Wordpress操作和过滤器中,几乎所有人都希望在Wordpress主题文件中使用(为了使这段代码灵活地添加插件功能)应该被称为函数,并调用它Wordpress do_action()的功能是一种必须采取的路径,这当然是有道理的.

这样插件开发人员就可以在他们的文件中调用add_action()/ add_filter()并将他们的插件放入应用程序的流程中.
所以…

基本上我在这里问的是:

  • How to apply such functionality to a laravel app?
  • Is there an easier way than calling everything by a function like do_action()?
  • Should i write some kind of a file management module for downloading and updating plugins?

我必须再次说我对wordpress方法不太熟悉以实现这种功能,所以我对上面提到的一些描述可能是错的,但是,如果可以的话,我感谢你对这个主题的任何澄清.

提前感谢您的任何见解.

* P.S.我试图尽可能清楚地解决这个问题,而且我并没有为我正在开发的系统寻找任何特定的方法.
我想要的是知道实现这种功能的Common / Best方法(如果有最好的方法),最好是在Laravel中,但是一般的算法仍然非常受欢迎.

我知道很多人都有同样的问题,正在处理同样的问题,所以如果你甚至只提供一个有用的文章链接,那就太棒了.*

我作为Wordpress开发人员工作了很长时间,而且我在Laravel也有足够的经验……说实话,制作这种功能并不是那么困难.

怎么样?

首先,您必须了解您将要制作的Web应用程序将具有所有功能,但只能从前端启用/禁用它们(管理面板/仪表板).换句话说,您的学校管理系统应用程序实际上已预先安装了所有功能/功能,但您只是允许用户启用/禁用它.这更简单.

所以,如果是的话.如果您想提供某人的考勤管理功能,您必须向该站点的管理员提供启用/禁用它的权限.

为什么?

WordPress具有用于添加/更新插件的内置UI.但是在Laravel中,一切都是基于代码的,因此我认为这是最简单的方法(特别是在你的app中可以插件).

脚步

>使用UI等建立网站…
>创建一个配置和迁移文件,其中包含允许用户启用/禁用的所有插件的名称.
>创建一个同步命令,用于同步应用中的所有插件.
>使用它从前端渲染页面并从后端管理其状态(is_active等等…)
>现在,一旦这些插件处于活动状态,请确保用户(比如主持人,编辑)有权管理它们,为此您显然必须创建角色/权限并使用Laravel策略来处理这些内容.
>最后,只有管理员才会有启用/禁用写入而没有其他人.

对于您希望人们使用过滤器/操作执行自己的功能的其他部分.我说这与你说安装Laravel包不容易的部分完全矛盾.好吧,如果你真的想要一个开发人员进入这个,为什么不立即要求他们为你的应用程序单独制作一个包?嗯……想想看:)

但是,即使这样,如果你想创建这样的功能,创建一个用户可以调用的简单类,并使用它的函数来调用自己的函数……就像 – > SMSPlugin :: do_action().但是,再次,更新/删除插件等内容将要求您构建自己的插件存储并要求用户上传到它.那么你将不得不制作一个API来不断检查所有已安装的插件的更新,等等……这是一个非常漫长的过程…而且我认为这也不可行!

希望我回答一切.如果您有任何疑问,请在评论中告诉我:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读