Подтвердить что ты не робот

Как получить весь вход POST в Laravel 5

Я использую Laravel 5 и пытаюсь получить все входные переменные POST в контроллере, например:

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

Итак, я получаю эти ошибки -

введите описание изображения здесь

Что я делаю неправильно?

4b9b3361

Ответ 1

Попробуйте следующее:

use Illuminate\Support\Facades\Request;
public function add_question(Request $request)
{
    return $request->all();
}

Ответ 2

Кажется, есть большая ошибка почти во всех текущих ответах в том, что они показывают ОБА GET и POST данные. НЕ ТОЛЬКО ПОЧТОВЫЕ данные.

Проблема с вашим кодом в качестве принятого упомянутого ответа заключается в том, что вы не импортировали фасад. Это можно импортировать, добавив в начало следующее:

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

Ответ 3

Вы должны использовать фасад, а не Illuminate\Http\Request. Импортируйте его вверху:

use Request;

И убедитесь, что он не конфликтует с другим классом.

Изменение: этот ответ был написан несколько лет назад. Теперь я поддерживаю подход, предложенный Шувровым ниже.

Ответ 4

Для тех, кто пришел сюда в поисках "как получить все входные данные POST" только

класс Illuminate\Http\Request происходит от Symfony\Component\HttpFoundation\Request, в котором есть две переменные класса, в которых хранятся параметры запроса.

public $query - для параметров GET

public $request - для параметров POST

Использование: чтобы получить только данные поста

$request = Request::instance();
$request->request->all(); //Get all post requests
$request->request->get('my_param'); //Get a post parameter

Источник здесь

EDIT

Для Laravel> = 5.5 вы можете просто вызвать $request->post() или $request->post('my_param'), который внутренне вызывает $request->request->all() или $request->request->get('my_param') соответственно.

Ответ 5

Вы можете получить все данные поста в этой функции: -

$postData = $request->post();

и если вы хотите, чтобы определенное поле, то используйте его: -

$request->post('current-password');

Ответ 6

Это должно быть как минимум:

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

Ответ 7

Вы можете использовать его

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

без

import Illuminate\Http\Request ИЛИ

use Illuminate\Support\Facades\Request ИЛИ другой.

Ответ 8

лучше использовать зависимость, чем для его аттестации классу.

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

или если вы предпочитаете использовать входную переменную, используйте

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

теперь вы можете использовать глобальный метод запроса, предоставляемый laravel

request()

например, чтобы получить первое имя ввода формы.

request()->first_name
// or
request('first_name')