【问题标题】:Invalid argument supplied for foreach() Facade\Ignition\Exceptions\ViewException为 foreach() Facade\Ignition\Exceptions\ViewException 提供的参数无效
【发布时间】:2020-04-23 14:16:47
【问题描述】:

代码在没有@foreach 语句的情况下运行良好。添加后出现以下错误:

Undefined variable: articles (View: C:\laravel\laravel\resources\views\about.blade.php)
$articles is undefined.
Make the variable optional in the blade template. Replace {{ $articles }} with {{ $articles ?? '' }}

当我添加 ?? '' 时,它会产生错误:

Facade\Ignition\Exceptions\ViewException
Invalid argument supplied for foreach()

下面是更大胆的完整代码: https://github.com/matthoek/Articles

这是我的看法:

        <? if (is_array($articles) || is_object($articles)) ?>
            {
                @foreach ($articles ?? '' as $article)
                {
                    <li class = "first">
                        <h3>{{ $article->title}}</h3>
                        <p><a href="#">{{ $article->excerpt }}</a></p>          
                    </li>
                @endforeach
                }           
            }
        </ul>

这是我的控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Article;

class ArticlesController extends Controller
{
    public function index()
    {
        $articles = App/Article::latest()->get();
        //$articles = Review::all();
        //$article = Review::all();

        return view('articles.index',['articles'=>$articles]);
        //return view('articles.index', ['articles' => $articles]);
    }

    public function show($id)
    {
        $article = App/Article::find($id);

        //return view('articles.show', ['article' => $article]);
        return view('articles.show')->with('article');
    }

    public function create()
    {
        return view('articles.create');
    }

    public function store()
    {
        //validation

        //clean up
        $article = new Article();
        $article->title = request('title');
        $article->excerpt = request('excerpt');
        $article->body = request('body');
        $article->save();

        return redirect('/articles');
    }

    public function edit()
    {
        return view('articles.edit');
    }
}

这是我的路由文件 web.php 的部分

Route::group(['middleware' => ['web']], function () 
{

    Route::get('/about', function () {
        $article = App\Article::latest()->get();
        return view('about', compact('about', 'articles'));
        //return $article;
    });
}

我已将路线文件的部分更改为以下内容,但似乎不起作用。

 return view('about')->with(['article'=> $article]);

我已确保以下内容位于我的 app/Http/Kernel.php 中的 middlewareGroups 属性中,用于 web \Illuminate\View\Middleware\ShareErrorsFromSession::class,

我已将 foreach 循环更改为 each 循环,并且在该行上出现相同的错误:

<h3>{{article->title}}</h3>

如果我应该发布更多代码,请告诉我。

【问题讨论】:

    标签: php laravel laravel-6.2


    【解决方案1】:

    更新你的观点

     <? if (is_array($articles) || is_object($articles)) ?>
            {
                @foreach($articles as $article)
    
                    <li class = "first">
                        <h3>{{ $article->title}}</h3>
                        <p><a href="#">{{ $article->excerpt }}</a></p>          
                    </li>
                @endforeach   
            }
        </ul>
    

    错误在于你的 foreach 循环:https://www.php.net/manual/en/control-structures.foreach.php

    【讨论】:

      【解决方案2】:

      在您的路线中:

          Route::get('/about', function () {
              $articles = App\Article::latest()->get();
              return view('about', compact('about', 'articles'));
          });
      

      它会返回一个集合,你可以循环它:

                   <ul>
                      @foreach ($articles as $article)
                      <li class = "first">
                         <h3>{{ $article->title}}</h3>
                         <p><a href="#">{{ $article->excerpt }}</a></p>          
                      </li>
                      @endforeach
                    </ul>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-17
        • 2020-05-10
        • 2020-09-07
        • 2020-08-09
        • 2020-09-24
        • 2023-04-01
        • 2020-09-17
        • 2020-08-20
        相关资源
        最近更新 更多