如何插入Laravel

时间:2019-04-09 09:35:21

标签: laravel hook

我可以开发Laravel软件包,并可以从软件包中定制刀片,迁移,模型,控制器,路由。但是我的问题是专门针对如何从软件包中插入已构建的默认CRUD进行修改。

我从CMS开始,例如WordPress,Drupal和CakePHP,Laravel等CMS。从过程编码开始,OOP是一个学习曲线,现在仍然是我的学习曲线。但是搜寻不同的平台使我明白,同一件事可以通过不同的方式实现。

凭借WordPress插件开发经验,可以使用操作和过滤器挂钩轻松扩展功能。具有以下核心功能:

Fetch form data (3 fields)
     hook here <---
Load form data (3 fields)
Submit form data (3 fields)
     hook here <---
Save form data (3 fields)

可以通过类似以下的插件轻松修改:

Fetch form data (3 fields)
     action hook <--- (hooked - added 2 fields)
Load form data (5 fields)
Submit form data (5 fields)
     filter hook <--- (hooked - added data of 2 additional fields)
Save form data (5 fields)

但是在Laravel中,我想在Laravel范围内实现类似的功能,我该怎么办?

我了解@yield('my_hook')的使用类似于WordPress中的动作挂钩。但是发现,如果我将多个连接到@yield上,它将被覆盖。

我发现了几个类似eventy的程序包,它们具有类似的操作方法和WordPress的筛选器钩子,但是我实际上是在寻求Laravel方法来解决此问题。

我遇到了Laravel Events,这是像WordPress中的动作挂钩一样进行挂钩的解决方案吗?还有过滤器挂钩,我认为我们可以扩展模型以修改其行为。但是,恐怕这些都是想象力,可能不是现实。我对此一无所知。

我可以对这个问题有所启发吗?

1 个答案:

答案 0 :(得分:0)

WordPress和Laravel都是完全不同级别的框架,因此比较可能很困难。

在Laravel中,您具有用于控制输出的工具(html页面)。当使用Blade模板时,@yield是一个示例。

此外,还有一些方法可以在框架执行过程中挂钩某些事件(Laravel事件)。

在Laravel中,您正在使用“模型-视图-控件”设置,这意味着您可以/应该:

  • 为正在使用的每个数据实体建立模型,并赋予其自行完成工作的责任。另请参见https://laravel.com/docs/5.8/eloquent#events中的钩子
  • 为要从前端执行的每个动作设置Controller方法。最好使这些方法尽可能短。例如最多10行。
  • 使用刀片模板引擎制作复杂的模板

希望这会有所帮助。