私はLaravel 5を使用しており、コントローラーのPOST変数のすべての入力を取得しようとしています。
public function add_question()
{
return Request::all();
}
だから、私はこのエラーを受け取っています-
私が間違っているのは何ですか?
これを試して :
use Illuminate\Support\Facades\Request;
public function add_question(Request $request)
{
return $request->all();
}
現在の回答のほとんどすべてに、GETとPOSTの両方のデータが表示されるという大きな間違いがあるようです。 NotONLYPOSTデータ。
前述の受け入れられた答えとしてのコードの問題は、ファサードをインポートしなかったことです。これをインポートするには、上部に次を追加します。
use Request;
public function add_question(Request $request)
{
return Request::post();
}
また、@ Canaan Etaiが言及しているように、インポートを必要とせずにグローバルリクエストメソッドを使用することもできます。
request()->post();
ただし、コントローラーメソッドでRequest
をインポートするより良い方法は、@ shuvrowの回答に記載されているように、依存性注入です。
use Illuminate\Http\Request;
public function add_question(Request $request)
{
return $request->post();
}
DIの詳細については、次を参照してください。
いずれの場合も、次を使用する必要があります。
// Show only POST data
$request->post(); // DI
request()->post(); // global method
Request::post(); // facade
// Show only GET data
$request->query(); // DI
request()->query(); // global method
Request::query(); // facade
// Show all data (i.e. both GET and POST data)
$request->all(); // DI
request()->all(); // global method
Request::all(); // facade
Illuminate\Http\Request
ではなくファサードを使用する必要があります。上部にインポートします:
use Request;
そして、それが他のクラスと競合しないことを確認してください。
編集:この答えは数年前に書かれました。私は今、以下のshuvrowによって提案されたアプローチを支持します。
「POSTのすべての入力を取得する方法」のみを探してここに来た人向け
class Illuminate\Http\Request
は、リクエストパラメータを格納する2つのクラス変数を持つSymfony\Component\HttpFoundation\Request
から拡張されます。
public $query
-GETパラメーター用
public $request
-POSTパラメーター用
使用法:投稿データのみを取得するには
$request = Request::instance();
$request->request->get('my_param');
ソース ここ
すべての投稿データをこの関数に取り込むことができます:-
$postData = $request->post();
特定のファイルが必要な場合は、それを使用してください:-
$request->post('current-password');
少なくとも次のようにする必要があります。
public function login(Request $loginCredentials){
$data = $loginCredentials->all();
return $data['username'];
}
使用できます
$params = request()->all();
なしで
import Illuminate\Http\Request
または
use Illuminate\Support\Facades\Request
ORその他。