Laravel маршрут пост против получить - PullRequest
0 голосов
/ 06 сентября 2018

проект laravel 5.6. Мой проект имеет 2 маршрута:

web.php

Route::get('testa', 'HomeController@showTestForm')->name('test');
Route::post('testa', 'HomeController@doTest');

HomeController:

public function showTestForm()
{
    Log::warning('from showTestForm');    
    return view('test');
}

.public function doTest(Request $request)
{
    Log::info('from doTest');    
    // return Input::all();
    return view('test', [
        'input' => implode(', ', Input::all()),
    ]);
}

test.blade.php

<form method="post" action="{{ route('test') }}">
@csrf

<input type="text" name="inputvalue">
<button type="submit" class="btn btn-primary">
merge
</button>

</form>

<div>Result</div>
@if(isset($input))
{{$input}}
@endif

Почему работает пост на маршруте («тест»)? Спасибо.

Ответы [ 4 ]

0 голосов
/ 06 сентября 2018

Причина, по которой route('test') работает, даже если ваша форма является запросом POST, заключается в том, что route() - это просто вспомогательная функция для генерации URL-адреса, а ваши маршруты GET и POST используют один и тот же URL-адрес.

Вы указали в своей форме запрос на публикацию, и он отправит его по указанному URL-адресу (в данном случае он будет таким же, как ваш запрос GET).

0 голосов
/ 06 сентября 2018

Это потому, что вы звоните по неправильному маршруту.

Изменение: <form method="post" action="{{ route('test') }}">

до: <form method="post" action="{{ url('/testa') }}">

или следуйте предыдущим шагам ответа (назовите маршрут сообщения, затем позвоните ему)

0 голосов
/ 06 сентября 2018

Я полагаю, что из ОП они не понимают, как один и тот же маршрут может принять и запрос GET, и запрос POST.

Разница в том, как сервер получает данные.

Прочитайте: HTTP-запросы

0 голосов
/ 06 сентября 2018

Edit:

Route::post('testa', 'HomeController@doTest')->name('postTest');

и затем используйте

<form method="post" action="{{ route('postTest') }}">

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...