web-dev-qa-db-ja.com

POSTのLaravelのすべての入力を取得する方法5

私はLaravel 5を使用しており、コントローラーのPOST変数のすべての入力を取得しようとしています。

public function add_question()
{
    return Request::all();
}

だから、私はこのエラーを受け取っています-

enter image description here

私が間違っているのは何ですか?

36
Abrar Jahin

これを試して :

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
31
Yahya Uddin

Illuminate\Http\Requestではなくファサードを使用する必要があります。上部にインポートします:

use Request;

そして、それが他のクラスと競合しないことを確認してください。

編集:この答えは数年前に書かれました。私は今、以下のshuvrowによって提案されたアプローチを支持します。

5
Joel Hinz

「POSTのすべての入力を取得する方法」のみを探してここに来た人向け

class Illuminate\Http\Requestは、リクエストパラメータを格納する2つのクラス変数を持つSymfony\Component\HttpFoundation\Requestから拡張されます。

public $query-GETパラメーター用

public $request-POSTパラメーター用

使用法:投稿データのみを取得するには

$request = Request::instance();
$request->request->get('my_param');

ソース ここ

4

すべての投稿データをこの関数に取り込むことができます:-

$postData = $request->post();

特定のファイルが必要な場合は、それを使用してください:-

$request->post('current-password');
3
nageen nayak

少なくとも次のようにする必要があります。

public function login(Request $loginCredentials){
     $data = $loginCredentials->all();
     return $data['username'];
}
0
Charmie

使用できます

$params = request()->all();

なしで

import Illuminate\Http\Requestまたは

use Illuminate\Support\Facades\Request ORその他。

0
Rafael Mendes