laravel表格发布到新路线

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel表格发布到新路线相关的知识,希望对你有一定的参考价值。

我从刀片password.blade.php开始,它是从路径加载的

Route::get('password/email', 'Auth\PasswordController@getEmail')
->name('auth.password.email');

在刀片我有一个表格,我试图发布到路线:

Route::post('password/change', 'User\UserController@password')
->name('user.password.change');

像这样:

!! Form::open(array('method' => 'POST', 'url' => route('user.password.change'))) !!
     <div class="form-group">
         <label for="email">Email Address</label>
         <input type="email" class="form-control" name="email" id="email" value=" old('email') ">
     </div>
     <button type="submit" class="btn btn-primary btn-block">Send Email</button>
!! Form::close() !!

但是,如果有意义的话,它似乎仍然会发布到“密码/电子邮件”路线,它可以获得起始刀片。

如何确保它发布到user.password.change路由?

答案

route()不得返回URL

如果您没有发布到正确的路由,则路由必须返回false或null。这意味着您没有传递所有必要的参数,或者说有问题的路线存在问题。问题变成了,“为什么?”

Routes Cache

一种可能性是需要更新路由缓存。这可以通过artisan命令完成:

php artisan route:cache

Expected Passing User

问题中的路线似乎不是这样,但如果您的UsersController功能需要User $用户,您需要确保您的路线和表格反映出来。

假设您使用的是旧版本的Laravel或Laravel集体。问题出在你的form open。您没有传递要更改密码的用户,如果您使用Auth :: user()可能不需要传递该参数(另外,请确保路由检查您没有更改密码在另一个帐户)

!! Form::open(array('method' => 'POST', 'route' => ['user.password.change,'user'=>$user->id]])) !!

要么

!! Form::open(array('method' => 'POST', 'url' => 'user/' . $user->id . 'password/change'])) !!

避免彻底混乱

此外,除非您有充分的理由不这样做,否则您不需要自己制作身份验证路由。 Laravel有一个auth package available,你可以添加到任何运行Laravel 5.4+的项目。

以上是关于laravel表格发布到新路线的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 5 中截断表格

MethodNotAllowedHttpException laravel-4

Laravel:我如何获得当前路线

带参数的 Laravel 路由

直接从公共文件夹加载 HTML 文件作为 Laravel 中的视图

Laravel发布路线错误