Как использовать разные формы с разными функциями контроллера и одним и тем же маршрутом в Laravel

Я создаю приложение с Laravel

В то же самое blade файл у меня разные формы. В div У меня есть две формы.

В одной форме user пишет что-то в textarea, После нажатия кнопки ОК страница перезагружается и данные сохраняются в таблице базы данных.

Другая форма появляется в модальном и содержит другую опцию, что user Можно установить и после нажатия другой кнопки данные должны храниться в другой таблице базы данных.

Так как я могу это сделать? Я пытался route функция в моем контроллере следующим образом:

Route::post('/anam','AnamnController@store');
Route::post('/anam','AnamnController@storePar');

и форма тега:

<form action="{{ action('AnamController@store') }}" method="post" class="form-horizontal">
<form id="formA" action="{{ action('AnamnesiController@storePar') }}" method="" class="form-horizontal">

Но они возвращают мне ошибки. Так что мне делать?

Спасибо!

2 ответа

Решение

Невозможно использовать один и тот же маршрут для двух разных функций, если вы не измените один, например, get вместо post:

Route::post('/anam','AnamnController@store');
Route::get('/anam','AnamnController@storePar');

но вы можете сделать эту логику:

Route::post('/anam','AnamnController@store');

и форма тега:

<form action="{{ action('AnamController@store') }}" method="post" class="form-horizontal">
    <input name="input_name" value="input-val" />
</form>

в контроллере:

public function store (){
   if(request()->input_name == 'val-1')
       this->store1();
   else
       this->store2();
}

protected function store1 () {
  //
}
protected function store2 () {
      //
}

У вас не может быть двух маршрутов с одним и тем же URL-адресом, имеющих один и тот же метод маршрута.

В вашем случае у вас есть два POST методы, идущие на тот же URL. Второе определение маршрута отменяет первый.

Переименуйте один из них.

Другие вопросы по тегам