2014-10-18 57 views
2

我刚开始学习Laravel,并且遇到了一个有关跨文件传递值的小问题。将数组传递给刀片文件并访问其值

在Routes文件中,我有以下功能。

Route::get('/', function() 
{ 
    $data = [ 
     'first_name' => 'Jane', 
     'last_name' => 'Doe', 
     'email' => '[email protected]', 
     '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 

我才知道,我可以做这样的事情return View::make('hello')->withData($data);在路径文件,并得到它的工作。但我不喜欢追加变量名称的方式,如withData

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

谢谢。

回答

3

您传递的是单个参数,它是一个关联数组,它告诉Blade:嘿,把这个数组的键作为变量的名称,并使它们的值对应于数组中的键的值。

这意味着,您现在在您的视图中有一个变量$first_name,其值为'Jane',值为'Doe'的变量$last_name等等。

这将是一样的做

return View::make('hello') 
    ->with('first_name', 'Jane') 
    ->with('last_name', 'Doe'); 

你的想法。

如果你想通过数组本身,你必须告诉刀片:嘿,借此阵列,并使其在通过给定名称的视图中提供:

return View::make('hello')->with('data', $data); 

现在你拥有了整个阵列可用在你的视图中由变量$data

+0

太棒了!我知道了。谢谢。 – Isuru 2014-10-18 22:18:19