it-swarm.com.de

Undefinierte Variable: Fehler - Laravel 5.2

Ich bin neu in Laravel und verwende Laravel Version 5.2.

Ich habe einen Controller und eine Anfrage mit dem Namen ArticlesController bzw. CreateArticleRequest erstellt und einige Validierungsregeln definiert.

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',
        ];
    }
}

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/');
    }
}

Wenn ich $ errors variable in meiner Vorlage benutze, die als add.blade.php bezeichnet wird, wird der Fehler undefined variable angezeigt: $ errors Ich habe versucht, das Problem zu lösen, aber ich habe es nicht wo bin ich falsch .add.blad.php

{{ var_dump($errors) }}

 Click here to see Error Image

12

Dies ist ein aktuelles Problem mit dem 5.2-Upgrade. Was passiert, ist die Middleware, die dafür verantwortlich ist, dass die Variable errors für alle Ihre Ansichten verfügbar ist, da sie nicht von der globalen Middleware in die Gruppe web Middleware verschoben wurde.

Es gibt zwei Möglichkeiten, dies zu beheben:

  1. In Ihrer kernel.php-Datei (app/Http/Kernel.php) können Sie den middleware \Illuminate\View\Middleware\ShareErrorsFromSession::class zurück in die protected $middleware-Eigenschaft verschieben.

  2. Wickeln Sie alle Ihre web-Routen mit einer Routengruppe und wenden Sie die Web-Middleware auf sie an:

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

Aus diesem Beitrag kopiert Laravel 5,2 $ -Fehler, die nicht in Blade erscheinen

29
smartrahat

Posting dies, da es für andere nützlich sein könnte, 

Wie in der ersten Lösung von Praveen erwähnt, verschieben Sie in Ihrer Kernel.php-Datei (app/Http/Kernel.php) \Illuminate\View\Middleware\ShareErrorsFromSession::class_ von $middlewareGroups in die protected $middleware-Eigenschaft, aber es wird der Fehler "Sitzungsspeicher nicht auf Anforderung gesetzt" ausgegeben. 

um diese Verschiebung zu beheben, __.\Illuminate\Session\Middleware\StartSession::class, nach $middleware property.

4
Sambhav

Dies geschieht, weil die folgende Datei im Composer-Aktualisierungsprozess nicht aktualisiert wird. Daher ist die mapWebRoutes-Methode nicht implementiert.

app/Providers/RouteServiceProvider.php

Kopieren Sie diese Datei von einer neuen Installation und es wird funktionieren. Folgen Sie dem Aktualisierungspfad in den Dokumenten.

2
SuperDuck

Schneiden Sie einfach alle Ihre Routen aus der Datei routes.php aus und fügen Sie sie wie folgt in die Middleware-Gruppe 'web' ein:

Routes Datei

1
RobertP

Verschieben Sie für 5.2 einfach die Routen, die die Fehlervariable enthalten, in die Middleware-Gruppe

0
Koko