首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel表单提交发送到错误的路由?

Laravel表单提交发送到错误的路由?
EN

Stack Overflow用户
提问于 2018-12-22 01:35:33
回答 2查看 453关注 0票数 0

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

代码语言:javascript
运行
复制
{!! 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() !!}

当我访问该页面时,结果如下所示:

代码语言:javascript
运行
复制
<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>

以下是相关的路由:

代码语言:javascript
运行
复制
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');

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

我不明白为什么会发生这样的事情。表单应该发送到site.localhost/place-order,它目前只输出return('place')用于测试。

OrdersController@show中的代码当前输出return('show')。我对所有用于测试的OrdersController方法执行了相同的操作。

添加php artisan route输出

代码语言:javascript
运行
复制
+--------+-----------+-------------------------------+-----------------------+------------------------------------------------------------------------+------------------------------------------------------+
| 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                                                  |
+--------+-----------+-------------------------------+-----------------------+------------------------------------------------------------------------+------------------------------------------------------+ 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-22 03:08:43

好吧,我是个彻头彻尾的笨蛋。

问题是我使用了一个自定义的验证请求,而这个路由并没有满足这个要求。因此,它实际上返回了包含错误的页面,但由于我没有意识到这一点,所以它没有显示任何错误。

票数 0
EN

Stack Overflow用户

发布于 2018-12-22 03:18:36

您的问题产生是因为您正在使用Route::resource,此路由为您的控制器定义了indexcreatestoreshoweditupdatedestroy路由,并且您试图覆盖store路由:

代码语言:javascript
运行
复制
Route::post('/place-order', 'OrdersController@store')->name('complete.order');

您可以像这样使用更改表单代码:

代码语言:javascript
运行
复制
{!! Form::open(['route' => ['orders.store']]) !!}

或者,您可以在控制器中创建一个新函数:

代码语言:javascript
运行
复制
public function newfucntion(Request $request)
{
    //All your code here
}

然后创建新路由:

代码语言:javascript
运行
复制
Route::post('/place-order', 'OrdersController@newFunction')->name('complete.order');

然后更改表单,如下所示:

代码语言:javascript
运行
复制
{!! Form::open(['route' => ['complete.order']]) !!}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53888789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档