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表格发布到新路线的主要内容,如果未能解决你的问题,请参考以下文章
MethodNotAllowedHttpException laravel-4