Laravel - 视图中未定义的变量$ data

时间:2018-03-13 05:11:05

标签: php controller laravel-5.5

我有这个问题。

  

未定义变量:acara(查看:   /var/www/html/event_organizer/resources/views/admin/home.blade.php)

但我已经在控制器上声明了$ acara,就像这样

控制器

use App\events; 

    public function lihat_acara()
    {
      $data['acara'] = events::all();
      return view('admin.home')->with($data);
    }

和这样的观点

home.blade.php

@foreach($acara as $key)
  <tbody>
    <tr>
      <td>{{ $key->nama_acara }}</td>
      <td>{{ $key->kategori_acara }}</td>
      <td>{{ $key->lokasi_acara }}</td>
    </tr>
  </tbody>
  @endforeach

我的代码出了什么问题?任何的想法? :)

3 个答案:

答案 0 :(得分:4)

您需要更改with()它需要一个数组

更改

with(['data'=>$data]);

或者你也可以这样做

withData($data);

现在,您可以使用$data和/来接收视图中的变量 在你的情况下它将是

use App\events; 

    public function lihat_acara()
    {
      $data['acara'] = events::all();
      return view('admin.home')->with(['acara'=>$data['acara']]);
    }

或者

use App\events; 

    public function lihat_acara()
    {
      $data['acara'] = events::all();
      return view('admin.home')->withAcara($data['acara']);
    }

答案 1 :(得分:3)

use App\events; 

public function lihat_acara()
{
  $data['acara'] = events::all();
  return view('admin.home', ['acara' => $data['acara'] ]);
}

OR

use App\events; 

public function lihat_acara()
{
  $data['acara'] = events::all();
  return view('admin.home')->with('acara', $data['acara']);
}

OR

use App\events; 

public function lihat_acara()
{
  $data['acara'] = events::all();
  return view('admin.home')->withAcara($data['acara']);
}

从这个laravel官方网站Passing data to view,您可以找到从控制器发送数据到视图的所有方式。

答案 2 :(得分:1)

在上面的场景中,acara不是您将acara声明为数组键的变量。我不知道你为什么要这样做。您可以简单地编写如下代码:

$acara = Event::all();

如果你想保持这样的控制器,改变@foreach循环中的变量:

@foreach($data['acara'] as $key)
<tbody>
    <tr>
        <td>{{ $key->nama_acara }}</td>
        <td>{{ $key->kategori_acara }}</td>
        <td>{{ $key->lokasi_acara }}</td>
    </tr>
</tbody>
@endforeach