如何将一种方法共享给Laravel中的所有控制器?
如何将一种方法共享给具有不同DI、视图和参数的所有控制器?我需要这样的东西:如何将一种方法共享给Laravel中的所有控制器?,laravel,Laravel,如何将一种方法共享给具有不同DI、视图和参数的所有控制器?我需要这样的东西: public function method(Model $model) { $baseData = [ 'model' => $model, 'route' => route('$route', [$param => $model]), ]; return view($view); }
public function method(Model $model)
{
$baseData = [
'model' => $model,
'route' => route('$route', [$param => $model]),
];
return view($view);
}
所有控制器都扩展
App\Http\controllers\Controller
,因此您可以将其放置在那里
如果您想将功能共享给所有控制器,最好的方式是在应用程序的服务文件夹中创建服务。
提供服务的步骤:-
1.使用artisan命令创建服务
php artisan make:service\u命名并定义要共享给项目中所有控制器的函数
创建服务后,您必须向提供商注册此服务。请使用artisan命令创建提供商。
php artisan make provider:provider_name,您将看到2个函数register and boot
注册函数用于注册您创建的服务,并引导调用已注册服务
像这样注册服务
公共函数寄存器()
{
$this->app->bind('app\Services\servicename',function($app){
返回新的serviceclassname;
});
}
是,我在想这样的事情,但这能更具动态性,只从url而不是从controlleri调用吗?我真的很感谢你的反馈,这听起来很有趣,但不知何故,我没有看到好处,因为我想摆脱我在几乎所有控制器中都有的方法。如果你想摆脱我在几乎所有控制器中都有的方法每个控制器,您可以使助手与您的功能使用它无处不在的所有控制器。通过创建名为helper folder的新文件夹,在应用程序目录中创建控制器。在不需要定义任何类的情况下,只需定义函数即可。你想我可以给你举个例子如何做助手。谢谢,但这不是必要的。我仍在思考如何实施您的第一个解决方案