Переадресация в Laravel
Не работает переадресация в Laravel.
Контроллер
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Botinkes;
class Controller2 extends Controller
{
public function submit (Request $req)
{
$zayav=new Botinkes();
$zayav->adr=$req->input('poisk');
return redirect()->route('poisk1');
}
public function index()
{
return view('poisk1');
}
}
Форма
<form action="/submit" method="post">
@csrf
<input type="text" id="poisk" name="poisk">
<button type="submit">Поиск</button>
</form>
Выдаёт следующую ошибку The GET method is not supported for this route. Supported methods: POST. если роут будет прописан вот так:
Route::get('/botinok', function () {
return view('poisk1');
});
Route::post('/submit','Controller2@submit')->name('poisk1');
Спросил совета, посоветовали изменить роут на:
Route::get('/botinok', function () {
return view('poisk1');
})->name('poisk1');
Route::post('/submit','Controller2@submit');
Но в таком случае выдаёт уже вот эту ошибку View [poisk1] not found.
Ответы (2 шт):
Во втором варианте всё правильно, только, как пишет система нет view-a с именем "poisk1". Для проверки зайдите в папку resources->views и найдите файл с именем "poisk1.blade.php", если такого файла нет, то добавьте его и всё заработает! Если помог примите пож ответ!)))
Убедитесь что в resources/views у вас лежит файл poisk1.blade.php
так же если у вас уже имеется в контроллере метод индекс рекомендую переписать роут так
Route::get('/botinok','Controller2@index')->name('poisk1');
Route::post('/submit','Controller2@submit');
ну и валидация на прием запроса в метод submit (Controller2) вижу отсутствует, если некогда погружаться (хотя я бы рекомендовал) дополните его так:
public function submit (Request $req){
$req->validate([
'poisk' => 'required|string', //пришедшие данные обязательны и должны быть строкой
]);
$zayav=new Botinkes();
$zayav->adr=$req->poisk;
return redirect()->route('poisk1');
}