【问题标题】:Passing an array to a blade file and accessing its values将数组传递给刀片文件并访问其值
【发布时间】:2014-12-14 04:40:11
【问题描述】:

我刚刚开始学习 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')-&gt;withData($data); 的操作并使其正常工作。但我不喜欢像withData 这样附加变量名的方式。

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

谢谢。

【问题讨论】:

    标签: php arrays laravel blade laravel-routing


    【解决方案1】:

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

    这意味着,您现在在视图中有一个值为“Jane”的变量$first_name,一个值为“Doe”的变量$last_name,依此类推。

    这和做的一样

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

    你明白了。

    如果你想传递数组本身,你必须告诉刀片:嘿,拿这个数组并通过给定的名称使其在视图中可用:

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

    现在您可以通过变量 $data 在视图中使用整个数组。

    【讨论】:

    • 太棒了!我得到了它。谢谢。
    【解决方案2】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-22
      • 2020-06-24
      • 1970-01-01
      • 2020-05-19
      • 1970-01-01
      • 2021-11-11
      • 2021-04-20
      相关资源
      最近更新 更多