【问题标题】:Laravel 5: PHP variable shared by all methods of controllerLaravel 5:控制器所有方法共享的 PHP 变量
【发布时间】:2018-02-13 00:22:07
【问题描述】:

我有一个资源控制器。路线是这样的-

Route::resource('branches/{branch_id}/employees', 'EmployeeController');

问题在于我需要将分支变量传递给视图的每个方法。

public function index($branch_id){
    $branch = Branch::find($branch_id);
    $employees = Employee::orderBy('created_at', 'desc')->get();
    return view('employees.index', compact('branch', 'employees'));
}

有什么方法可以将分支变量传递给通过此控制器返回的每个视图?

@Sapnesh Naik 它不是重复的,因为我需要在每个函数中操作分支。

【问题讨论】:

  • 如果您需要将变量传递给特定视图然后laravel.com/docs/5.5/views#view-composers,否则使用view::share
  • @SapneshNaik 实际上我并不完全同意,他希望在controller 中而不是在view 中操纵branch_id
  • @SapneshNaik 听起来你只看了这个问题的标题。您链接的不是重复的。
  • @TheAlpha 感谢您解决了我的问题。

标签: php laravel


【解决方案1】:

在这种情况下,你可以试试这个:

public function __construct(Request $request)
{
    view()->share(
        'branch', Branch::find($request->route('branch_id'))
    );
}

如果您不使用方法注入,您也可以使用request()->route('branch_id'),在您的__construct 方法中通过类型提示Request $request

【讨论】:

    【解决方案2】:

    将此添加到您的控制器构造函数中:

        public function __construct()
        {
            view()->share('branch', Route::current()->getParameter('brach_id'););
        }
    

    【讨论】:

    • $request->get('branch_id') 将返回 null,因为 branch_id 不是请求输入,而是路由参数。
    • 答案还是错误的,请检查我更正的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    相关资源
    最近更新 更多