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的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5上未显示自定义错误页面

实例上未定义属性或方法“键” - Vue/Laravel 应用程序

在 Laravel 5.1 中传递数据控制器以查看获取未定义的变量

Laravel向视图传递变量的两种方法

iPhone 5 和 4 上未对齐的自定义导航视图

android上未显示自定义标记图标[关闭]