Php MethodNotAllowedHttpException使用return back()生成->;Laravel 5.4中的withInput()

Php MethodNotAllowedHttpException使用return back()生成->;Laravel 5.4中的withInput(),php,forms,Php,Forms,我在论坛上搜索过很多类似的问题,但没有一个能解决我的问题。我认为这是不同的,因为: 此时未使用表单验证 表单方法似乎不相关(仅1个post操作) 路由没有包装在web中间件中 下面是应用程序应该执行的操作: 用户(具有或不具有身份验证)通过表单(显示事件)查看公共页面 用户选择要订购的特定票据,并被引导至第二张表单(注册步骤1) 然后,用户为订购的门票填写人口统计信息 如果使用的电子邮件地址是有效用户(以DB为单位),则处理步骤应返回步骤2和3中的表单,填充字段并刷新消息。否则,它将执行所需的s

我在论坛上搜索过很多类似的问题,但没有一个能解决我的问题。我认为这是不同的,因为:

  • 此时未使用表单验证
  • 表单方法似乎不相关(仅1个post操作)
  • 路由没有包装在web中间件中
  • 下面是应用程序应该执行的操作:

  • 用户(具有或不具有身份验证)通过表单(显示事件)查看公共页面
  • 用户选择要订购的特定票据,并被引导至第二张表单(注册步骤1)
  • 然后,用户为订购的门票填写人口统计信息
  • 如果使用的电子邮件地址是有效用户(以DB为单位),则处理步骤应返回步骤2和3中的表单,填充字段并刷新消息。否则,它将执行所需的save()操作。(寄存器_步骤2)
  • web.php的相关路径如下:

        Route::get('/events/{event}', 'EventController@show')->name('display_event');
        Route::post('/register/{event}', 'RegistrationController@showRegForm')->name('register_step1');
        Route::post('/register/{event}/create', 'RegistrationController@store')->name('register_step2');
    
    public function showRegForm (Request $request, $id) {
        // Registering for an event from /event/{id}
        $ticket        = Ticket::find(request()->input('ticketID'));
        $quantity      = request()->input('quantity');
        $discount_code = request()->input('discount_code');
        $event         = Event::find($ticket->eventID);
        return view('v1.public_pages.register', compact('ticket', 'event', 'quantity', 'discount_code'));
    }
    
    RegistrationController.php的相关部分如下:

        Route::get('/events/{event}', 'EventController@show')->name('display_event');
        Route::post('/register/{event}', 'RegistrationController@showRegForm')->name('register_step1');
        Route::post('/register/{event}/create', 'RegistrationController@store')->name('register_step2');
    
    public function showRegForm (Request $request, $id) {
        // Registering for an event from /event/{id}
        $ticket        = Ticket::find(request()->input('ticketID'));
        $quantity      = request()->input('quantity');
        $discount_code = request()->input('discount_code');
        $event         = Event::find($ticket->eventID);
        return view('v1.public_pages.register', compact('ticket', 'event', 'quantity', 'discount_code'));
    }
    
    以及:


    我采纳了@apokryfos评论中的建议,将表单解析和显示脚本从POST更改为get


    redirect()->back()显然总是一个method=get,这就是MethodNotAllowedHttpException的原因。在我使用Laravel的2周时间里,我还没有发现这个事实。

    我采纳了@apokryfos评论中的建议,将表单解析和显示脚本从一篇帖子改为一个get


    redirect()->back()显然总是一个method=get,这就是MethodNotAllowedHttpException的原因。在我使用Laravel的2周时间里,我还没有遇到这个事实。

    重定向生成一个
    GET
    请求。您真的需要通过
    POST
    显示您的注册表吗?POST正在处理来自表单1的输入,然后显示。我想我可以将其分解,以便处理步骤是post,然后重定向到get以显示下一个表单。我会试试看,如果这能解决问题,就给你的评论提供答案(假设这是可能的)。:-)不,这是不可能的,但我的评论也只是一个评论,不是一个实际的答案,但是如果它对你有效,请回答你自己的问题,因为它可能会帮助其他人。重定向会生成一个
    GET
    请求。您真的需要通过
    POST
    显示您的注册表吗?POST正在处理来自表单1的输入,然后显示。我想我可以将其分解,以便处理步骤是post,然后重定向到get以显示下一个表单。我会试试看,如果这能解决问题,就给你的评论提供答案(假设这是可能的)。:-)不,这是不可能的,但我的评论也只是,一个评论,不是一个实际的答案,但是如果它对你有用的话,一定要回答你自己的问题,因为它可能会帮助别人。