【问题标题】:Foreach loop has undefined variable in my view在我看来,Foreach 循环有未定义的变量
【发布时间】:2018-12-24 17:17:24
【问题描述】:

错误出现在视图上

我的 $audio 变量没有定义。

我想使用 foreach 循环显示数据库中的所有内容。

我尝试基于 laravel 文档 https://laravel.com/docs/5.7/pagination#basic-usage 上的分页

我的控制器在下面:

use Illuminate\Http\Request;
use App\Audio_lectures;
use Illuminate\Support\Facades\DB;

public function index(){
        $audio = DB::table('audio_lectures')->latest()->paginate();
        return view('welcome', ['audio_lectures' => $audio]);
}

欢迎视图如下:

<div class="container">
  <div class="row">
<table class="table table-dark">
  <thead>
    <tr>
      <th scope="col">#</th>
      <th scope="col">Subject</th>
      <th scope="col">Date Added</th>
      <th scope="col">Download</th>
    </tr>
  </thead>
  <tbody>
    @foreach ($audio as $audio_lectures)
    <tr>
      <th scope="row">{{$audio_lectures->id}}</th>
      <td>{{$audio_lectures->subject}}</td>
      <td>{{$audio_lectures->created_at}}</td>
      <td><a href="{{$audio_lectures->filelink}}" class="btn btn-outline-light btn-sm">Download</a></td>
    </tr>
    @endforeach
  </tbody>
</table>
</div>
</div>

我的路由 web.php 如下:

Route::get('/','Audio_lecturesController@index');  

我希望将数据库中的所有音频讲座显示到我的视图中。

【问题讨论】:

    标签: laravel laravel-5


    【解决方案1】:

    试试这个

    @foreach ($audio_lectures as $audio)
       <tr>
          <td scope="row">{{$audio->id}}</td>
          <td>{{$audio->subject}}</td>
          <td>{{$audio->created_at}}</td>
          <td>
             <a href="{{$audio->filelink}}" class="btn btn-outline-light btn-sm">Download</a>
          </td>
       </tr>
    @endforeach
    

    你是从控制器 audio_lectures 数组传递的,但是你 获得如你所见音频

    【讨论】:

    • 我不完全明白为什么你的答案是正确的,但谢谢。我确实做了一个 var_dump 并且所有数据都应该在 $audio 变量中。你能再解释一下吗?
    • @Nebulanoob 看看你的代码的这个链接,更加关注....return view('welcome', ['audio_lectures' => $audio]); ...你会明白的。
    • @ViperTecPro ,很抱歉迟到了,但我一直在看。我将数组数据发送到 $audio 变量。这个对吗?但我不明白我没有定义变量 $audio_lectures。它是怎么变成变量的?
    • 好吧,首先,阅读这个laravel.com/docs/5.7/views#creating-views,如果你不明白,请告诉我,我会帮忙
    【解决方案2】:

    在你的视图文件循环中试试这个

    @foreach ($audio_lectures as $value)
       <tr>
          <td scope="row">{{$value->id}}</td>
          <td>{{$value->subject}}</td>
          <td>{{$value->created_at}}</td>
          <td><a href="{{$value->filelink}}" class="btn btn-outline-light btn-sm">Download</a></td>
       </tr>
    @endforeach
    

    【讨论】:

    • 谢谢。它也有效。你能解释一下它为什么起作用吗?
    • 您正在从控制器返回视图中传递 audio_lectures('welcome', ['audio_lectures' => $audio]);但是你在你的视图中获得音频,你必须在你的视图中使用“$audio_lectures”,因为你通过这个变量传递你的 $audio
    猜你喜欢
    • 2020-11-03
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 2017-09-29
    相关资源
    最近更新 更多