如何在Laravel中使用具有不同控制器功能和相同路径的不同形式

时间:2018-10-18 11:20:43

标签: php laravel controller routes

我正在使用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 个答案:

答案 0 :(得分: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 () {
      //
}

答案 1 :(得分:0)

不能有两个具有相同 url 的路由和具有相同方法的路由。

在您的情况下,您有两种POST方法将使用相同的 url 。第二个路由定义正在取消第一个。

重命名其中之一。