【问题标题】:Laravel - Undefined variable $data on viewLaravel - 视图上未定义的变量 $data
【发布时间】:2018-03-13 05:11:04
【问题描述】:

我有这个问题。

未定义变量: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

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

【问题讨论】:

  • 控制器:view('admin.home', compact("data"));。在你的 home.blade.php 中,@foreach($data["acara"] as $key)

标签: php controller laravel-5.5


【解决方案1】:
use App\events; 

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

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']);
}

从这个laravel官网Passing data to view可以找到从控制器发送数据到视图的一路。

【讨论】:

  • 是的,当然,请看第一种情况。这将给出数组。你像我一样改变了你的答案格式。 :)
  • hmm...我觉得你需要再看一遍官方文档。第一种情况数据是视图函数的第二个参数。第二种情况,view('viewname')->with('variablename', value)。那不是同一类型。
  • 是的,谢谢:)。我已经尝试了你的建议,它也有效
【解决方案2】:

你需要改变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']);
    }

【讨论】:

  • 我们需要将变量和值(两个参数)传递给 with() 函数。或者您可以将变量数组作为 view() 函数的第二个参数传递
  • 您已经根据我的回答多次更新了您的回答。你为什么要删除你写给我的答案的所有评论?
【解决方案3】:

在上述场景中,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

【讨论】:

    猜你喜欢
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多