使用 Laravel 5.2 ,刀片中有两个表单,他们必须从根({{1})提交(POST)两个操作})
这是 app / Http / routes.php
/
.. Route::auth(); // Mails Route::get('/contact', ['uses' => 'PageController@getContact', 'as' => 'contact']); Route::post('/contact', ['uses' => 'PageController@postContact', 'as' => 'pages.postContact']); Route::post('/', ['uses' => 'PageController@postGuestRegistration', 'as' => 'pages.postGuestRegistration']); Route::post('/', ['uses' => 'PageController@postOnlineEnquiry', 'as' => 'pages.postOnlineEnquiry']); ...
以及其他/contact
,get
和post
路线正常运行。
只考虑来自根(resource
)的两条POST路由,这里的路由是列表,但仅限列表中的最后一条。
即。, /
。
除非 pages.postOnlineEnquiry
,否
我有一个路线组:
pages.postGuestRegistration
有解决方案吗?
即使我从根路径对这些POST路由进行分组,我也看不到任何可能的方法。
现在我找不到将两个表单发布到同一路径和不同操作的方法。
错误显示:
路线[pages.postGuestRegistration]未定义。
OR
路线[pages.postOnlineEnquiry]未定义。
答案 0 :(得分:1)
@NigelRen是对的,你可以使用相同的网址和同一方法get
,post
...
所以我的建议是,使用隐藏输入来区分控制器
<form action="{{route('guest_or_online')}}" method="post">
.....
.....
<input type="hidden" value="guest" name="type">
</form>
<form action="{{route('guest_or_online')}}" method="post">
.....
.....
<input type="hidden" value="online" name="type">
</form>
所以你的路线只有一个,这是
Route::post('/', ['uses' => 'PageController@GuestOrOnline', 'as' => 'guest_or_online']);
在控制器中,您可以通过获取type
public function GuestOrOnline(Request $request){
if($request->type == "guest"){
return $this->postGuestRegistration($request);
}else{
return $this->postOnlineEnquiry($request);
}
}