Как получить данные $request из формы by в laravel по типу json

#php #laravel #forms

#php #laravel #формы

Вопрос:

Я пытаюсь получить данные из своей формы в Laravel 8. В этой форме я пытаюсь записать информацию от пользователя и отправить ее с помощью json. Мои формы выглядят так:

 <form action="/profile" method="get" enctype="application/json">
    <label for="name">Player name</label>
    <input type="text" id="name" value="{{ $data->name }}">
    <label for="from">The lowest number</label>
    <input type="number" id="from" value="{{ $data->from }}">
    <label for="to">The highest number</label>
    <input type="number" id="to" value="{{ $data->to }}">
    <label for="attempts">Number of attempts</label>
    <input type="number" id="attempts" value="{{ $data->attempts }}">
    <button type="submit">Save</button>
</form>
 

У меня есть контроллер для этого и для действия=»/profile»:

 namespace AppHttpControllersGame;

use AppHttpControllersController;
use AppModelsUser;
use IlluminateContractsViewView;
use IlluminateHttpRequest;

class UserController extends Controller
{
    public function store(Request $request)
    {
        $data = $request;
        
        return view('newUser', [
            'data' => $data
        ]);
    }

    public function profile(Request $request)
    {
        $data = $request->all();
        dd($request->all());

        return response($data)
            ->header('Content-Type', 'application/json');
    }
}
 

И мои Маршруты:

 Route::get('/new', 'UserController@store')
    ->name('user.store');

Route::get('/profile', 'UserController@profile')
    ->name('user.profile');
 

Проблема в том, что я думаю, что получу значения из этой формы, но $request-> all() — это только пустой массив. Я не знаю, чего мне не хватает. Как получить эти данные?

Спасибо за помощь.

Комментарии:

1. Разве вы не поставили кнопку «отправить» или отправляете ее с помощью JS?

2. Раньше у меня была кнопка type=»submit», но ничего не изменилось. Я добавил его в свой код и все тот же пустой массив. Я отредактирую его в своем вопросе.

3. Вы включили поле csrf в тег формы?

4. Я добавил это сейчас, забудьте об этом. После этого, когда я отправляю свою форму, я сгенерировал токен в своем массиве, но больше ничего, по-прежнему без каких-либо значений из входных данных.

Ответ №1:

Вы должны установить атрибут ‘name’ во входных данных:

 <input type="text" id="name" name="name" value="{{ $data->name }}">