将数组传递给刀片文件并访问其值

时间:2014-10-18 21:14:29

标签: php arrays laravel blade laravel-routing

我刚刚开始学习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等变量名称的方式。

有没有办法传递数组变量并从刀片文件中访问它?

谢谢。

2 个答案:

答案 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