我正在学习laravel,并且在更新代码标签后遇到了标签问题。当我单击标签时,我会遇到此问题:
Facade \ Ignition \ Exceptions \ ViewException提供了无效的参数 foreach()(查看:C:\ blog \ resources \ views \ articles \ index.blade.php)
我在控制器中的代码:
<?php
namespace App\Http\Controllers;
use App\Article;
use App\Tag;
use Illuminate\Http\Request;
class ArticlesController extends Controller
{
public function index()
{
if(request('tag'))
{
$articles = Tag::where('name', request('tag'))->firstOrFail()->articles;
}
else
{
$articles = Article::latest()->get();
}
return view ('articles.index',['articles' => $articles]);
}
显示页面
@foreach ($articles as $article )
<div class="content">
<div class="title">
<h2>
<a href="/articles/{{$article->id}}">
{!! $article->title !!}
</a>
</h2>
</div>
<p>
<img src="/images/banner.jpg" alt="" class="image image-full"/>
</p>
{!! $article->exceprt!!}
</div>
@endforeach
这是雄辩的Tag:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Tag extends Model
{
public function article()
{
return $this->belongsToMany(Article::class);
}
}
答案 0 :(得分:1)
错误表明文章数组为空。
您需要添加条件以检查数组是否为空。
@if(!empty($articles))
@foreach ($articles as $article)
@endforeach
@endif
这不是获取文章的正确方法。我建议您使用需要检查标记的位置。
答案 1 :(得分:0)
您的标签模型中的pivot_longer(df1, cols=-c(pidp, sex, edtype),
names_to=c(".value","wave"), names_pattern="(.*)_(\\d)")
关系未定义。因此,当您致电articles
时,您不会获得集合,而是得到Tag::where('name', request('tag'))->firstOrFail()->articles
。
这就是为什么出现此错误的原因,因为您无法循环访问null
变量。
您应该修正自己的恋情:
null