【问题标题】:POST routes are not listing from root path Laravel 5.2POST 路由未从根路径 Laravel 5.2 中列出
【发布时间】:2018-09-12 09:56:00
【问题描述】:

使用 Laravel 5.2,刀片中有 两个表单,它们必须从根目录提交(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 和其他 getpostresource 路由运行良好。

只考虑两个往返于根 (/) 的 POST 路由,这里列出了路由,但仅针对列表中的最后一个。

即,pages.postOnlineEnquiry 仅限。

否则pages.postGuestRegistration仅当我对列表进行排序并在pages.postOnlineEnquiry之后取pages.postGuestRegistration

我有一个路由组:

Route::group(['prefix' => 'pages'], function () {
   ...
   ...
   // only GET|HEAD routes come under /pages are listed here 
   ...
   ...
});

有解决办法吗?

即使我从根路径对这些 POST 路由进行分组,我也看不到任何可能的方法。

现在我找不到将两个表单发布到相同路径和不同操作的方法。

错误显示:

路线 [pages.postGuestRegistration] 未定义。

路线 [pages.postOnlineEnquiry] 未定义。

【问题讨论】:

  • 也分享您的表格?
  • 你不能有两个路径和方法相同的路由,服务器没有办法知道使用哪一个。考虑改变路径或方法。
  • @C2486 我想你猜到了:表单操作是{{route('pages.postOnlineEnquiry')}}{{route('pages.postGuestRegistration')}},记住根本原因来自路由。 tnx)
  • @NigelRen 好的,这可能是不可能的。现在您清楚地看到了摆在您面前的问题。考虑更改路径或方法,您能否发布答案?我认为这在这种情况下不起作用。我应该考虑另一个控制器还是放弃整个需求?
  • 也许 C2486 发布的答案可以解决问题。

标签: php forms laravel laravel-5 routes


【解决方案1】:

@NigelRen 是对的,你不能有多个具有相同 url 和相同方法的路由 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);
    }
}

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 2018-04-28
    • 2016-08-30
    • 2016-12-01
    • 2016-06-24
    • 1970-01-01
    • 2016-07-28
    • 2016-08-23
    • 2013-08-08
    相关资源
    最近更新 更多