2016-01-08 3 views
18

Ich versuche die getting started Anleitung von Laravel.com.Undefinierte Methode in der Anfrage :: all()

Es gibt ein Kapitel Erstellen der Aufgabe. Es gibt $request einen Parameter des Rückrufs und in der Funktion $request->all() wird verwendet, um die GET-Parameter zu erhalten. Aber wenn ich den Rückruf ausführen erhalte ich die Fehler

Fatal error: Call to undefined method Illuminate\Support\Facades\Request::all()

Hier mein Code:

Route::post('/task', function(Request $request) { 

    $validator = Validator::make($request->all(), [ 
     'name' => 'required|max:255', 
    ]); 

    if($validator->fails()) 
     redirect('/')->withInput()->withErrors($validator); 

    $task = new Task(); 
    $task->name = $request['name']; 
    $task->save(); 

    return redirect('/'); 
}); 
+0

Include 'verwenden Illuminate \ Http \ Request;' an der Spitze Ihrer Datei –

Antwort

42

Ihre Controller-Funktion eine Instanz Illuminate \ Support \ Fassaden \ anfordern injiziert wird, die nur statische leitet Anrufe zu zugrunde liegenden Anfrage Objekt.

Um dies zu beheben, müssen Sie die zugrunde liegende Anforderungsklasse importieren, damit sie korrekt injiziert wird. Fügen Sie den folgenden an der Spitze Ihrer routes.php Datei:

use Illuminate\Http\Request; 

oder rufen Sie einfach anfordern :: alle() statt $ request-> alle().

+3

Vielen Dank, aber es wäre schön, wenn diese Informationen in diesem Handbuch platziert werden. – Gerrit

+0

@Gerrit Es gibt keine explizite Erklärung, aber es gibt ein 'Illuminate \ Http \ Request;' in der Routes-Datei, die in der Anleitung gezeigt wird. – patricus

+0

@Jed danke, der 'ODER' Teil löste mein Problem :) – Hazmat

3

Da dieser Code ist in der routes.php-Datei, die nicht Namespace ist, in der Schließung das Request Objekt, das ist die Request Fassade, nicht das Objekt Illuminate\Http\Request injiziert. Die Request Fassade hat keine all() Methode.

Ihren Code ändern:

Route::post('/task', function(\Illuminate\Http\Request $request) { 
    // code 
}); 

Hinweis: Sie nicht vollständig im Allgemeinen haben die Request Objekt in Controller-Methoden in Frage kommen, da Controller in der Regel eine use Illuminate\Http\Request; an der Spitze hinzuzufügen. Dies ist der Grund, warum Ihre Funktionsdefinition in der routes-Datei etwas anders aussieht als eine Controller-Methodendefinition.

Sie können this beantworten für ein wenig mehr Informationen.

Verwandte Themen