我试图将错误返回到我的视图,这是我的控制器TestcategoryController的一部分
$rules =array(
'name' => 'required'
);
$validator = Validator::make(Input::all(), $rules);
//process
if($validator->fails()){
return Redirect::to('testcategory/create')->withErrors($validator);
}
在视图testcategory/create
中,如果我尝试输出如下错误
@if($errors->any())
{{ $errors->first('name') }}
@endif
我什么都没得到。但是如果我{{dd($errors)}}
我得到
object(Illuminate\Support\ViewErrorBag)#91 (1) { ["bags":protected]=> array(1) {
["default"]=> object(Illuminate\Support\MessageBag)#92 (2)
{ ["messages":protected]=> array(1)
{ ["name"]=> array(1) { [0]=> string(27) "The name field is required." } }
["format":protected]=> string(8) ":message" } } }
我得到错误的唯一方法是如果我杀死脚本。我做错了什么?
6条答案
按热度按时间wmvff8tz1#
另一个问题可能是$errors没有保存到Session变量$errors中,视图中没有显示任何内容。
下面是同一问题的一个例子:http://laravel.io/forum/03-28-2016-errors-variable-empty-after-failed-validation
对我来说,上面链接中定义的解决方案起作用了。解决方案:在app\Http\Kernel.php中将
\Illuminate\Session\Middleware\StartSession::class,
从$middlewareGroups移动到$middleware之前
之后
rbl8hiat2#
如果你在你的例子中什么都没有得到,那么这意味着你已经用其他东西或空对象覆盖了你的$errors对象--检查你传递给视图的代码和数据。你的代码是完全有效的,工作良好-我已经在本地测试。也许,你传递了空的$errors对象给你的子视图,但是在其他视图中使用了正确的对象。
mnemlml83#
你需要像这样使用它:
uurity8g4#
添加中间件,并解决了..
sbtkgmzw5#
我在使用Laravel 8.0时遇到了同样的问题
我解决这个问题的唯一方法是一层一层地输入错误包,直到我手动得到消息:
pbwdgjma6#
我也遇到过类似的问题--我的视图中没有收到错误消息。我通过在.env文件中设置
SESSION_DRIVER=file
得到了帮助。在此之前,指定了值“cookie”。