在Laravel 5.1中,我无法将变量发送到Blade模板

5

我试图将一个变量发送到Blade视图,但出现了以下错误:

未定义的变量:data(视图:D:\ wamp \ www \ tienda \ resources \ views \ cliente.blade.php)

这是我的路由:

Route::resource('cliente','ClienteController');

这是我的客户端控制器:

public function index(){

    $data = Cliente::all();

    return view('cliente',compact($data));
}

我的刀锋:
 @foreach ($data as $user)
        <tr>
            <td>{{$user->nombre}}</td>
        </tr>
    @endforeach

我做错了什么?

此外,如果我尝试像这样做:

Controller Cliente:(控制器客户端)

    public function index(){
    return view('cliente', ['name' => 'James']);
}

还有 Blade:

{{$name}}

那是有效的…只有变量和数组无效。
2个回答

4
尝试在您的控制器上执行以下操作:
public function index(){
    $data = Cliente::all();
    return view('cliente',compact('data'));
}

来自 compact 文档:“每个参数都可以是包含变量名称的字符串,或者是一个变量名称数组。该数组可以在内部包含其他变量名称数组;compact() 会递归处理它。”


1
哦!compact方法接收一个字符串,而不是变量...我没有注意到...非常感谢。 - Alejandro Martinez

1
你可以尝试这种方式。
public function index(){
$data['data'] = Cliente::all();
return view('cliente', $data);
}

然后你可以在Blade中像这样捕获它。
 @foreach ($data as $user)
    <tr>
        <td>{{$user->nombre}}</td>
    </tr>
@endforeach

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接