2016-01-08 6 views
18

私はガイドをLaravel.comから試してみます。Request :: all()の未定義メソッド

の章があります。コールバックのパラメータは$requestであり、関数$request->all()はGET-Parametersを取得するために使用されます。

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

ファイルの先頭に 'use Illuminate \ Http \ Request;'が含まれています –

答えて

42

お使いのコントローラ機能のみ静的転送を照らし\サポート\ファサード\要求のインスタンスを注入します:私は実行している場合しかし、私はここでエラー

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

を取得すること、コールバックは私のコードがあります基底への呼び出し要求オブジェクト。

基本的な要求クラスをインポートして正しく注入する必要があることを修正するために、全て>代わりに$要求 - の

use Illuminate\Http\Request; 

か、単に要求::すべてを(呼び出し():あなたののroutes.phpファイルの先頭に以下を追加します。

+3

ありがとうございます。この情報をこのガイドに記載していただければ幸いです。 – Gerrit

+0

@Gerrit明示的な説明はありませんが、ガイドに記載されているルートファイルには 'Use Illuminate \ Http \ Request;'があります。 – patricus

+0

@Jedありがとう、 'OR'部分が私の問題を解決しました:) – Hazmat

3

このコードは名前空間ではないroutes.phpファイルにあるため、RequestオブジェクトはRequestファサードであり、Illuminate\Http\Requestオブジェクトではありません。 Requestファサードにはall()メソッドがありません。

にコードを変更し

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

注:コントローラは通常、上部にuse Illuminate\Http\Request;を追加するので、あなたは一般的に、完全にコントローラのメソッドでRequestオブジェクトを修飾しません。このため、ルートファイルの関数定義がコントローラメソッド定義と少し違って見えることがあります。

もう少し詳しい情報はthisの回答をご覧ください。

関連する問題