如何在Laravel中重用具有控制器功能的组件


How to reuse a component in Laravel WITH its controller functionality

我做了什么

我有一个从数据库中提取的东西列表,并显示在列表中。让我们称之为"物料列表";。当我"得到"/stufflist时,路由器会显示此列表。连接的控制器获取数据并将其传递给模板。

我想做什么

我想在其他页面上显示此列表(在我的情况下:仪表板),其中该列表只是其他页面旁边的一个组件。

最佳实践是什么?当我键入/dashboard时,我当然会得到一个错误,因为我包含的内容列表没有来自其控制器的数据。

我不想为我在中使用内容列表的每个模板在每个控制器中实现数据提取。我是否必须实现某种存储库,并在每个控制器的每个模板中使用它,包括属性列表

我想做的是创建一个显示内容的组件和一个绑定到该组件的控制器。每当我在任何页面上包含这个组件(显示内容)时,它都会包含它背后的所有逻辑

我该怎么做?谢谢你的帮助!

您是否考虑过服务注入?如果你正在使用刀片模板,那么你可以利用它。

假设您与DB的交互是在模型中的一个方法或专用查询类中获得东西列表,您可以在刀片模板中执行以下操作:

@inject('stuffList', 'App'Queries'StuffList')
<div>
    Monthly Revenue: {{ $stuffList->get() }}.
</div>

然后,您可以将使用它的零件提取为零件,并使用@include将其提取到主模板或任何刀片文件中。请参阅:包括子视图