将相同的变量返回到laravel中的每个控制器

Del*_*ain 1 laravel eloquent laravel-controller

我需要将相同的结果发送到几乎每个view页面,所以我需要绑定variables并返回每个控制器.

我的示例代码

public function index()
{
    $drcategory = DoctorCategory::orderBy('speciality', 'asc')->get();
    $locations = Location::get();

    return view('visitor.index', compact('drcategory','locations'));
}

public function contact()
{
    $drcategory = DoctorCategory::orderBy('speciality', 'asc')->get();
    $locations = Location::get();

    return view('visitor.contact', compact('drcategory','locations'));
}
Run Code Online (Sandbox Code Playgroud)

但是如你所见,我需要一遍又一遍地编写相同的代码.如何编写一次并在需要时将其包含在任何功能中

我想过使用构造函数,但我无法弄清楚如何实现它.

shu*_*ngh 5

您可以通过使用以下View::share()函数来实现此目的AppServicerProvider:

软件\供应商\ AppServiceProvider.php:

public function __construct()
{
   use View::Share('variableName', $variableValue );
}
Run Code Online (Sandbox Code Playgroud)

然后,在您的控制器中,您可以view正常调用:

public function myTestAction()
{
    return view('view.name.here');
}
Run Code Online (Sandbox Code Playgroud)

现在您可以在视图中调用您的变量:

<p>{{ variableName }}</p>
Run Code Online (Sandbox Code Playgroud)

您可以在文档中阅读更多内容.

  • 参考文件:https://laravel.com/docs/5.5/views#sharing-data-with-all-views (2认同)