You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 19:13:18