首页 > 解决方案 > Laravel 表单提交发送到错误的路线?

问题描述

我有一个非常简单的表格:

{!! Form::open(['route' => ['complete.order']]) !!}
    {!! Form::hidden('date', \Carbon\Carbon::now()->format('F j, Y ')) !!}
    {!! Form::hidden('web_token', $order->web_token) !!}
    {!! Form::submit('Place this order', ['class'=>'btn btn-primary']) !!}
{!! Form::close() !!}

当我访问该页面时,呈现如下:

<form method="POST" action="http://site.localhost/place-order" accept-charset="UTF-8">
    <input name="_token" type="hidden" value="kc6d4XoZ78RvJNtQbN8lavpLP7e1lI7rTGBvbeIP">
    <input name="date" type="hidden" value="December 21, 2018 ">
    <input name="id" type="hidden" value="15">
    <input class="btn btn-primary" type="submit" value="Place this order">
</form>

以下是相关路线:

Route::get('/orders/form', 'OrdersController@viewform')->name('orderform');
Route::post('/orders/review', 'OrdersController@review')->name('orders.review');
Route::post('/place-order', 'OrdersController@store')->name('complete.order');
Route::resource('/orders', 'OrdersController', ['except'=>['edit', 'update', 'destroy', 'show', 'store']])->middleware('auth');
Route::get('/orders/{order}', 'OrdersController@show')->name('orders.show');

当我单击提交按钮时,我被定向到site.localhost/orders/review,根据调试栏,它作为 GET 请求而不是 POST 传递给。

我无法弄清楚为什么会这样。表单应该是site.localhost/place-order,目前只是输出return('place')用于测试。

OrdersController@show当前输出中的代码return('show')。我在所有的 OrdersController 方法中都做了同样的测试。

添加php artisan route输出

+--------+-----------+-------------------------------+-----------------------+------------------------------------------------------------------------+------------------------------------------------------+
| Domain | Method    | URI                           | Name                  | Action                                                                 | Middleware                                           |
+--------+-----------+-------------------------------+-----------------------+------------------------------------------------------------------------+------------------------------------------------------+
|        | GET|HEAD  | /                             |                       | App\Http\Controllers\HomeController@index                              | web,auth                                             |
|        | GET|HEAD  | _debugbar/assets/javascript   | debugbar.assets.js    | Barryvdh\Debugbar\Controllers\AssetController@js                       | Barryvdh\Debugbar\Middleware\DebugbarEnabled,Closure |
|        | GET|HEAD  | _debugbar/assets/stylesheets  | debugbar.assets.css   | Barryvdh\Debugbar\Controllers\AssetController@css                      | Barryvdh\Debugbar\Middleware\DebugbarEnabled,Closure |
|        | DELETE    | _debugbar/cache/{key}/{tags?} | debugbar.cache.delete | Barryvdh\Debugbar\Controllers\CacheController@delete                   | Barryvdh\Debugbar\Middleware\DebugbarEnabled,Closure |
|        | GET|HEAD  | _debugbar/clockwork/{id}      | debugbar.clockwork    | Barryvdh\Debugbar\Controllers\OpenHandlerController@clockwork          | Barryvdh\Debugbar\Middleware\DebugbarEnabled,Closure |
|        | GET|HEAD  | _debugbar/open                | debugbar.openhandler  | Barryvdh\Debugbar\Controllers\OpenHandlerController@handle             | Barryvdh\Debugbar\Middleware\DebugbarEnabled,Closure |
|        | GET|HEAD  | api/user                      |                       | Closure                                                                | api,auth:api                                         |
|        | GET|HEAD  | confirm-account/{token}       |                       | App\Http\Controllers\UserController@create                             | web                                                  |
|        | GET|HEAD  | home                          | home                  | App\Http\Controllers\HomeController@index                              | web,auth                                             |
|        | GET|HEAD  | login                         | login                 | App\Http\Controllers\Auth\LoginController@showLoginForm                | web,guest                                            |
|        | POST      | login                         |                       | App\Http\Controllers\Auth\LoginController@login                        | web,guest                                            |
|        | POST      | logout                        | logout                | App\Http\Controllers\Auth\LoginController@logout                       | web                                                  |
|        | GET|HEAD  | my-account                    | my-account.index      | App\Http\Controllers\UserController@index                              | web,auth                                             |
|        | POST      | my-account                    | my-account.store      | App\Http\Controllers\UserController@store                              | web,auth                                             |
|        | GET|HEAD  | my-account/create             | my-account.create     | App\Http\Controllers\UserController@create                             | web,auth                                             |
|        | PUT|PATCH | my-account/{my_account}       | my-account.update     | App\Http\Controllers\UserController@update                             | web,auth                                             |
|        | DELETE    | my-account/{my_account}       | my-account.destroy    | App\Http\Controllers\UserController@destroy                            | web,auth                                             |
|        | GET|HEAD  | my-account/{my_account}       | my-account.show       | App\Http\Controllers\UserController@show                               | web,auth                                             |
|        | GET|HEAD  | my-account/{my_account}/edit  | my-account.edit       | App\Http\Controllers\UserController@edit                               | web,auth                                             |
|        | POST      | orders                        | orders.store          | App\Http\Controllers\OrdersController@store                            | web,auth                                             |
|        | GET|HEAD  | orders                        | orders.index          | App\Http\Controllers\OrdersController@index                            | web,auth                                             |
|        | GET|HEAD  | orders/create                 | orders.create         | App\Http\Controllers\OrdersController@create                           | web,auth                                             |
|        | GET|HEAD  | orders/form                   | orderform             | App\Http\Controllers\OrdersController@viewform                         | web                                                  |
|        | POST      | orders/review                 | orders.review         | App\Http\Controllers\OrdersController@review                           | web                                                  |
|        | GET|HEAD  | orders/{order}                | orders.show           | App\Http\Controllers\OrdersController@show                             | web                                                  |
|        | POST      | password/email                | password.email        | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail  | web,guest                                            |
|        | POST      | password/reset                |                       | App\Http\Controllers\Auth\ResetPasswordController@reset                | web,guest                                            |
|        | GET|HEAD  | password/reset                | password.request      | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web,guest                                            |
|        | GET|HEAD  | password/reset/{token}        | password.reset        | App\Http\Controllers\Auth\ResetPasswordController@showResetForm        | web,guest                                            |
|        | POST      | place-order                   | complete.order        | App\Http\Controllers\OrdersController@store                            | web                                                  |
|        | POST      | register                      |                       | App\Http\Controllers\Auth\RegisterController@register                  | web,guest                                            |
|        | GET|HEAD  | register                      | register              | App\Http\Controllers\Auth\RegisterController@showRegistrationForm      | web,guest                                            |
|        | POST      | user/store                    | user.store            | App\Http\Controllers\UserController@store                              | web                                                  |
+--------+-----------+-------------------------------+-----------------------+------------------------------------------------------------------------+------------------------------------------------------+ 

标签: laravellaravel-5.6

解决方案


好吧,我是个彻头彻尾的白痴。

问题是我正在使用自定义请求进行验证,这条路线没有满足。所以它实际上是返回带有错误的页面,但由于我没有意识到这一点,它没有显示任何错误。


推荐阅读