未定义的变量:错误 - Laravel 5.2

Muh*_*eem 12 php laravel laravel-5.2

我是Laravel的新手,并使用laravel版本5.2.

我分别创建了一个名为ArticlesControllerCreateArticleRequest的控制器和请求,并定义了一些验证规则.

CreateArticleRequest

<?php

namespace App\Http\Requests;

use App\Http\Requests\Request;

class CreateArticleRequest extends Request
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'title' => 'required|min:3',
            'body' => 'required|max:400',
            'published_at' => 'required|date',
        ];
    }
}
Run Code Online (Sandbox Code Playgroud)

ArticlesController

<?php

namespace App\Http\Controllers;

use App\Article;
//use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use Carbon\Carbon;
use App\Http\Requests\CreateArticleRequest;

class ArticlesController extends Controller
{

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

    public function create_article_row(CreateArticleRequest $request){
        Article::create($request->all());
        return redirect('articles/');
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在名为add.blade.php的模板中使用$ errors变量时,它显示错误未定义变量:$ errors 我试图解决问题,但我没有.请告诉我我错在哪里. add.blad.php

{{ var_dump($errors) }}
Run Code Online (Sandbox Code Playgroud)

单击此处查看错误图像

sma*_*hat 30

这是5.2升级的一个突破性问题.正在发生的是中间件,它负责使errors所有视图可用的变量未被利用,因为它已从全局中间件转移到web中间件组.

有两种方法可以解决这个问题:

  1. 在您的kernel.php文件(app/Http/Kernel.php)中,您可以将其middleware \Illuminate\View\Middleware\ShareErrorsFromSession::class移回protected $middleware属性.

  2. web使用路由组包装所有路由并将Web中间件应用于它们:

    Route::group(['middleware' => 'web'], function() {
        // Place all your web routes here...(Cut all `Route` which are define in `Route file`, paste here) 
    });
    
    Run Code Online (Sandbox Code Playgroud)

从这篇文章复制Laravel 5.2 $错误没有出现在Blade中


Sam*_*dey 5

Posting this as it might be useful for others,

正如 Praveen 在第一个解决方案中提到的,在您的Kernel.phpfile( ) 中 从属性app/Http/Kernel.php移动,但同样会开始抛出错误“会话存储未根据请求设置”,\Illuminate\View\Middleware\ShareErrorsFromSession::class$middlewareGroupsprotected $middleware

也解决这一举动 \Illuminate\Session\Middleware\StartSession::class,$middleware property