【发布时间】:2016-08-31 13:32:04
【问题描述】:
我想在存储角色时使用自定义请求将自定义验证消息传递到我的视图。
我创建了一个名为StoreRoleRequest的新请求
<?php
namespace App\Http\Requests;
use App\Http\Requests\Request;
use Illuminate\Contracts\Validation\Validator;
class StoreRoleRequest extends Request
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'name' => 'required'
];
}
protected function formatErrors(Validator $validator)
{
return $validator->errors()->all();
}
public function messages()
{
return [
'name.required' => 'the name of the Role is mandatory',
];
}
}
然后将这个自定义请求传递给我在RoleController 中的存储函数,如下所示:
public function store(StoreRoleRequest $request)
{
Role::create($request->all());
return redirect(route('role.index'));
}
我有一个视图显示创建角色表单,其中验证似乎正常工作但没有显示错误,即使我将它们调用到这样的视图中:
{!! Former::open()->action(route('role.store')) !!}
@if (count($errors->all()))
<div class="alert alert-danger">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</div>
@endif
{!! Former::text('name')->label('Groupe name') !!}
{!! Former::text('display_name')->label('Displayed name') !!}
{!! Former::text('description')->label('Description') !!}
{!! Former::actions( Button::primary('Save')->submit(),
Button::warning('Clear')->reset() ,
Button::danger('Close')->asLinkTo('#')->withAttributes(['data-dismiss' => 'modal'])
)!!}
{!! Former::close() !!}
有谁知道为什么错误没有出现在视图中?我是否在自定义请求中循环某些内容?
编辑
注意:即使在登录和注册表单中也不会再出现错误。
在这种情况下,我已将指向 web ['middleware' => ['web'] 的中间件更改为:
Route::group(['middleware' => []], function ()
{
// other routes
Route::resource('role', 'RoleController');
});
我的所有错误都完美显示。
你找到这个问题的根本原因了吗?
【问题讨论】:
-
可能有很多原因。看看stackoverflow.com/questions/34454081/… - 它可能会有所帮助
-
首先转储:
{{ dd($error) }}。我认为这是内部收藏,这就是为什么它根本没有显示任何内容。 -
@MarcinNabiałek:中间件已正确插入,与您提交的答案完全相同。
-
@FilipKoblański:出现错误时不会进入控制器内部的方法,之前会被阻塞。
-
@MarcinNabiałek:你能评论我的编辑会话吗? :)
标签: laravel laravel-5 laravel-5.2 blade