如何将一种方法共享给Laravel中的所有控制器?

如何将一种方法共享给Laravel中的所有控制器?,laravel,Laravel,如何将一种方法共享给具有不同DI、视图和参数的所有控制器?我需要这样的东西: public function method(Model $model) { $baseData = [ 'model' => $model, 'route' => route('$route', [$param => $model]), ]; return view($view); }

如何将一种方法共享给具有不同DI、视图和参数的所有控制器?我需要这样的东西:

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的新文件夹,在应用程序目录中创建控制器。在不需要定义任何类的情况下,只需定义函数即可。你想我可以给你举个例子如何做助手。谢谢,但这不是必要的。我仍在思考如何实施您的第一个解决方案