我正试图让验证错误显示在我的应用程序中,结果遇到了麻烦。
我已经尝试了几种不同的方式,这就是我目前的设置方式。。。
我的路线是这样的:
<?php
Route::group(['middleware' => ['web']], function () {
Route::get('/', [
'as' => 'home',
'uses' => 'HomeController@index'
]);
Route::post('/mailing', [
'as' => 'mailing.create',
'uses' => 'MailingController@create'
]);
});
我的邮件控制器是这样的:
class MailingController extends Controller
{
public function create(Request $request)
{
$this->validate($request, [
'email' => 'required',
]);
dd($request->email);
}
}
我的表格是这样的。。。
<form action="{{ route('mailing.create') }}" method="post">
<label for="email">
Email
<input type="text" name="email" id="email">
@if ($errors->has('email'))
{{ $errors->first('email') }}
@endif
</label>
<input type="submit">
{{ csrf_field() }}
</form>
当我提交一个空表单时,它会转到MailingController中的create方法,但不会发生任何事情,也不会显示任何错误。只是表格。
这真的应该有效,问题可能是上面的例子适用于Laravel 5.1,但在最新的5.2版本中不起作用吗?
非常感谢您的好意。
您可以在官方文档中看到,默认情况下应用web中间件组:
请记住,web中间件组自动应用于您的默认routes.php文件。
如果您执行
php artisan route:list
您可以看到中间件被应用于web路由器两次。
您必须删除组
Route::group(['middleware' => ['web']], function () {
}
这在一个次要的5.2版本中发生了变化,所以很可能是在"composer更新"之后出现了这个错误。
更多信息请点击此处。
看来我必须回答自己的问题。。。在laravel 5.2中,路由自动位于中间件路由中,因此从。。。
<?php
Route::group(['middleware' => ['web']], function () {
Route::get('/', [
'as' => 'home',
'uses' => 'HomeController@index'
]);
Route::post('/mailing', [
'as' => 'mailing.create',
'uses' => 'MailingController@create'
]);
});
至
<?php
Route::get('/', [
'as' => 'home',
'uses' => 'HomeController@index'
]);
Route::post('/mailing', [
'as' => 'mailing.create',
'uses' => 'MailingController@create'
]);
修复了所有问题。