我在编程方面很新(仍然是学生)并且在Laravel中非常新。我必须为消防员制作一个外联网,因此,大多数情况下,我需要从我的数据库获取的记录是他们的个人数据,他们的议程以及类似的东西。也许我正在以错误的方式看着这个,但我想以这种方式建立我的项目:
BaseController __constructor包含获取每个视图中所需数据的逻辑。事实上,我使用'View :: share'代码
返回所有变量View::share('milite', $milite);
View::share('agenda', $agenda);
View::share('log_accessi', $log_accessi);
View::share('data_import', $data_import);
虽然我想使用另一个类,AgendaController(它会扩展BaseController)从firefighters'agenda获取数据。为此,我需要将变量$ milite从BaseController传递给AgendaController。
我真的不知道该怎么做!有人可以解释一下吗? 我希望你理解我的问题,因为英语不是我的母语。非常感谢你!
萨拉
答案 0 :(得分:0)
有许多方法可以跨控制器共享变量:
答案 1 :(得分:0)
这不是正确的方法。首先,在BaseController的构造函数中使用各种逻辑将最终减慢应用程序的速度,因为所有请求都必须通过这些逻辑语句,无论它们是否需要它们。事实上,控制器根本不应该相互交互,因为他们应该做的是处理传入的HTTP请求并提供响应。
为了给你答案,因为你无论如何都在扩展BaseController,至少将你的逻辑移出BaseController构造函数并将其移动到BaseController中的公共方法
class BaseController extends Controller
{
public function fillView()
{
$data = array('someData' => 'data');
return $data;
}
然后在AgendaController中,您可以通过继承来访问公共方法:
<?php
class AgendaController extends BaseController
{
public function showAgenda(){
$dataFromBaseController = $this->fillView();
...
}
}
这不是你应该怎么做的。您通常要做的是将逻辑相关的东西移动到另一个类中的方法(比如服务,或者如果您正在访问数据库,则可能是存储库),然后使用laravel的依赖注入容器来访问控制器中的那些方法