Laravel中同一方法内为两个变量赋值并传递视图的正确方法
Laravel中在视图传递多个变量的正确方式
你当前代码的问题出在with方法的调用方式上——with('products', $products,'datas',$datas)这种连续传多组键值对的写法不被支持,with单次调用只能处理一组键值对,或者接收一个关联数组来批量传递变量。另外注意代码里的拼写错误:products.dispaly应该修正为products.display。
下面是几种正确的实现方式:
方式1:链式调用with方法
通过多次调用with,每次传递一组变量:
function display(){ $datas = Request::all(); $products = Product::all(); return view('products.display') ->with('products', $products) ->with('datas', $datas); }
方式2:给with传入关联数组
把所有要传递的变量放到一个关联数组里,一次性传给with:
function display(){ $datas = Request::all(); $products = Product::all(); return view('products.display')->with([ 'products' => $products, 'datas' => $datas ]); }
方式3:直接在view函数中传入关联数组
view函数的第二个参数本身就支持传入关联数组,这是最常用的简洁写法:
function display(){ $datas = Request::all(); $products = Product::all(); return view('products.display', [ 'products' => $products, 'datas' => $datas ]); }
方式4:使用compact函数(变量名与键名一致时适用)
如果变量名和你想在视图中使用的键名完全一致,可以用compact函数简化代码:
function display(){ $datas = Request::all(); $products = Product::all(); return view('products.display', compact('products', 'datas')); }
内容的提问来源于stack exchange,提问作者Nadula
相关产品推荐
相关产品推荐

