Laravel - 视图上未定义的变量 $data
Posted
技术标签:
【中文标题】Laravel - 视图上未定义的变量 $data【英文标题】:Laravel - Undefined variable $data on view 【发布时间】: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)
【参考方案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)。那不是同一类型。 让我们continue this discussion in chat. 是的,谢谢:)。我已经尝试了你的建议,它也有效【参考方案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
【讨论】:
以上是关于Laravel - 视图上未定义的变量 $data的主要内容,如果未能解决你的问题,请参考以下文章
实例上未定义属性或方法“键” - Vue/Laravel 应用程序