Laravel 5:PHP变量在控制器的所有方法间共享
Laravel 5:PHP变量在控制器的所有方法间共享
我有一个资源控制器。路由如下-
Route::resource('branches/{branch_id}/employees', 'EmployeeController');
问题是在每个方法中,我需要将branch变量传递给视图。
public function index($branch_id){ $branch = Branch::find($branch_id); $employees = Employee::orderBy('created_at', 'desc')->get(); return view('employees.index', compact('branch', 'employees')); }
有没有办法可以将branch变量传递给通过该控制器返回的每个视图?
@Sapnesh Naik 这不是重复的,因为我需要在每个函数中操作branch变量。
Laravel 5: PHP变量在控制器的所有方法中共享
在这种情况下,你可以尝试以下方法:
public function __construct(Request $request) { view()->share( 'branch', Branch::find($request->route('branch_id')) ); }
如果你没有使用类型提示的方法注入,在你的`__construct`方法中,你也可以使用`request()->route('branch_id')`。
在Laravel 5中,有时我们希望在控制器的所有方法中共享一个PHP变量。这在某些情况下非常有用,比如我们想在视图中显示当前分支的信息。然而,如果我们只是简单地在一个方法中定义变量,那么它将无法在其他方法中访问。
为了解决这个问题,我们可以使用Laravel提供的`view()->share()`方法。这个方法可以让我们在所有视图中共享一个变量。在上面的代码示例中,我们在控制器的构造函数中使用这个方法。构造函数会在控制器实例化时自动调用,这意味着我们可以确保变量在控制器的所有方法中都可用。
在构造函数中,我们通过`Request $request`来注入一个请求实例。然后,我们使用`$request->route('branch_id')`来获取当前分支的ID。接下来,我们使用这个ID来查询数据库,找到对应的分支,并将其赋值给`branch`变量。
通过这样的操作,我们就可以在控制器的任何方法中通过`$branch`来访问当前分支的信息了。
另外,如果你没有使用类型提示的方法注入,你也可以使用`request()->route('branch_id')`来获取当前分支的ID。这样就不需要在构造函数中显式注入`Request`实例了。
总之,通过使用`view()->share()`方法,我们可以在Laravel 5的控制器中共享一个PHP变量,并确保它在所有方法中都可用。这样我们就可以轻松地在视图中显示当前分支的信息了。