Laravel 5.1中的一个页面中有多个表单

时间:2015-11-03 07:44:18

标签: php laravel laravel-5 laravel-5.1 laravel-routing

我有一个刀片页面有一个表单要更新,另一个表单要保存

我的问题如何根据方法类型提交两者

我试图像下面的例子那样实现

 public function postCompanyProfileSettings(Request $request)
 {

    if($request->isMethod('POST')) {
          // do something to save
      }
     if($request->isMethod('PUT')) {
        // do something to update 
     }
 }

它与POST方法配合良好,但PUT返回Route Exception MethodNotAllowedHttpException in RouteCollection.php line 219:

我认为在routs.php中的问题,但我不知道为多种形式(多种方法)处理一条路线究竟要做什么

我在route.php档案中的路线

  //setting routes...
 get('/home/settings', 'CompanyProfileController@getCompanyProfileSettings');
 post('/home/settings','CompanyProfileController@postCompanyProfileSettings');

有没有办法实现这一目标?

2 个答案:

答案 0 :(得分:1)

或者你可以使用隐藏的输入

 public function postCompanyProfileSettings(Request $request)
 {

    if(isset($request->get('update')) {
          // do something to update
      }
      // do something to save  
 }

路线..

post('/home/settings','CompanyProfileController@postCompanyProfileSettings');

答案 1 :(得分:1)

在我看来,我会使用与POST相同的方法。

第一种形式:

<form method="POST" action={{ url('vault/{batch_centre_id}/candidates/{id}', ['form' => '1']) }}>

第二种形式:

<form method="POST" action={{ url('vault/{batch_centre_id}/candidates/{id}', ['form' => '2']) }}>

在您的行动检查表中:

if ($request->get('form') == 1) {
return $request->get('form');
} else if ($request->get('form') == 2) {
return $request->get('form');
}

return result;

因此,从上面您可以在一个页面上拥有无限的表单,只要您标记表单并从控制器验证它们。

选中此answer