Не удается отправить форму с помощью POST - PullRequest
0 голосов
/ 06 августа 2020

Недавно новая установка laravel. Попытка отправить минимальную базовую форму c с помощью POST. Получите ошибки, как показано ниже. Попробуйте следующий сценарий ios, но ни один из них не приведет к успешной обработке формы.

Моя форма

 <form method="post" action="/form_populating_data">

   @csrf_field
   {{ method_field('PUT') }}

  <?php foreach ($array as $key => $value): ?>

    <label
    for= <?php echo "'{$key}'" ?>
    >
    <?php echo "{$key}" ?>
    </label>

    <input
    type="text"
    id="1"
    value= <?php echo "{$value}" ?>
    >

    <br>

  <?php endforeach; ?>


  <input type="submit" name="" value="Save">

</form>

Тесты по устранению неполадок

Начальная точка, оставьте "get" [routes / web.php]

Route::get('/form_populating_data', function () {
    return view('site_tax_declarations/form_populating_data');
});

Результат:

The POST method is not supported for this route. Supported methods: GET, HEAD. 

Настройте, измените на "post" [routes / web.php]

Route::post('/form_populating_data', function () {
    return view('site_tax_declarations/form_populating_data');
});

Результат:

The GET method is not supported for this route. Supported methods: POST. 

Настройте [form.php], сохраните [Route: get]

Добавлены следующие строки между тегами POST:

@csrf_field
{{ method_field('PUT') }}

Результат:

Метод PUT не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD.

Настроить [form.php], изменить на [Route: post]

Добавлено следующее между тегами POST:

@csrf_field
{{ method_field('PUT') }}

Результат:

Метод PUT не поддерживается для этого маршрута. Поддерживаемые методы: POST.

Настройте [form.php], оставьте [Route: get] Обновлено с помощью action = "/ form_populating_data"

Удалено:

@csrf_field
{{ method_field('PUT') }}

Результат:

The PUT method is not supported for this route. Supported methods: GET, HEAD. 

Ответы [ 2 ]

1 голос
/ 06 августа 2020

Я думаю, что есть недоразумение в том, как работает Http Request. Вам нужен один маршрут для доставки формы пользователю:

Route::get('/form_populating_data', function () {
    return view('site_tax_declarations/form_populating_data');
});

В вашей форме вы используете маршрут для обработки данных, например <form action="/process-data' method="post">.

Затем вам нужен почтовый маршрут с эта конечная точка:

Route::post("/process-data", function (Request $request) {
  dd($request->input());
});

Примечание. Внедрение Request в обработчик маршрута.

Ввод POST будет доступен в $request->input().

РЕДАКТИРОВАТЬ: поля вашей формы нуждаются в атрибуте name, например <input name="message">. Значения доступны с $request->input("message")

Дополнительная информация, которую вы можете найти в документации по маршрутизации:

https://laravel.com/docs/7.x/routing

0 голосов
/ 06 августа 2020

вы должны сделать это таким образом

  {{ method_field('PUT') }}
  @csrf_field

Если вы используете метод PUT для обновления, вы должны указать его перед полем csrf. Подмена метода должна быть написана перед csrf.

Надеюсь, теперь это сработает.

...