我刚刚开始学习Laravel,而且我在跨文件传递值方面遇到了一个小问题。
在Routes文件中,我有以下功能。
Route::get('/', function()
{
$data = [
'first_name' => 'Jane',
'last_name' => 'Doe',
'email' => 'jane@hotmail.com',
'location' => 'London'];
return View::make('hello')->with($data);
});
我将$data
数组传递给名为hello.blade.php的文件。我想打印出这个数组中的所有值。问题是我无法迭代它们并输出其中的值。我收到错误未定义变量:数据。
这是我的刀片文件。
@extends('layouts.main')
@section('content')
@foreach ($data as $item)
<li>{{{ $item }}}</li>
@endforeach
@stop
我了解到我可以在Route文件中执行类似return View::make('hello')->withData($data);
的操作并使其正常工作。但我不喜欢添加withData
等变量名称的方式。
有没有办法传递数组变量并从刀片文件中访问它?
谢谢。
答案 0 :(得分:5)
你传递的是一个关联数组的参数,这告诉Blade:嘿,把这个数组的键作为变量的名称,并使它们的值对应于数组中键的值。
这意味着,您现在在视图中有一个变量$first_name
,其值为'Jane',变量$last_name
的值为'Doe',依此类推。
这与做
相同return View::make('hello')
->with('first_name', 'Jane')
->with('last_name', 'Doe');
你明白了。
如果你想传递数组本身,你必须告诉刀片:嘿,拿这个数组并在给定名称的视图中使它可用:
return View::make('hello')->with('data', $data);
现在,您可以通过变量$data
在视图中使用整个数组。
答案 1 :(得分:0)
Quasdunk 完全正确。如果您将数组传递给刀片。
然后你需要使用 foreach 来循环数据,如: 在您的刀片中,您可以 dd($data)。就我而言,我在刀片中的返回数据是:
array:1 [▼
0 => {#185 ▼
+"id": 1
+"title": "Alice."
+"artist": "Lysanne Lang Sr."
+"rating": 0
+"album_id": 3
+"created_at": "2021-02-03 23:24:05"
+"updated_at": "2021-02-03 23:24:05"
}
]
所以你需要在下面显示数据值。
@foreach($data as $data_value)
{{$data_value->title}}
@endforeach