Laravel 验证后如何传递额外数据?
验证之后,我想传递一些额外的数据以供查看。但是,我不能发送它 我的控制器就像Laravel 验证后如何传递额外数据?,laravel,laravel-5.7,Laravel,Laravel 5.7,验证之后,我想传递一些额外的数据以供查看。但是,我不能发送它 我的控制器就像 公共功能测试() { $validator=validator::make( 请求()->all(), ['ziptest'=>'正则表达式:/^([0-9]{3}-[0-9]{4})$/'] ); $errors=$validator->errors(); 如果($errors->any()){ 返回() ->威瑟罗(错误) ->withTitle('来自控制器的数据') ->withInput(); } 回归"成功
公共功能测试()
{
$validator=validator::make(
请求()->all(),
['ziptest'=>'正则表达式:/^([0-9]{3}-[0-9]{4})$/']
);
$errors=$validator->errors();
如果($errors->any()){
返回()
->威瑟罗(错误)
->withTitle('来自控制器的数据')
->withInput();
}
回归"成功",;
}
在我的刀片中,我想检查标题是否通过。所以在我看来我有
@if($errors->any())
@foreach($errors->all()作为$error)
{{$error}}
@endforeach
@恩迪夫
@if(isset($title))
{{$title}}
@恩迪夫
但是,错误部分显示正确。但不是标题。为什么它不起作用
我也试着用这种方式发送标题
return-back()->withErrors($errors)
->带('title','Data From Controller')
->withInput();
它也不起作用
我在SO中搜索,发现了几个关于将数据从控制器传递到视图的类似问题。然而,我的情况有点不同 您的第二种方法几乎是正确的
return-back()->withErrors($errors)
->与([
“标题”=>“来自控制器的数据”
])
->withInput();
注意数组表示法在此处使用
array\u merge
方法
$errors = $validator->errors();
if($errors->any()) {
$newErrors = array_merge($errors->toArray(),['title' => 'Data From Controller']);
return back()
->withErrors($newErrors)
->withInput();
}
在您的示例中,您正在重定向回上一个位置。当您将
与*
一起用于重定向时,信息会闪现到会话中,而不是像返回视图那样直接提供给视图
要使它与您的示例一起工作,您必须检查
会话('title')
,以从重定向中获取闪现的标题。您是否尝试了验证挂钩,但它将返回错误包中的数据
$validator->after(function ($validator) {
$validator->errors()->add('someField', 'Somedata');
});
我想知道你在哪里调用view,因为我看到你的
test()
方法只做验证部分,在你的view中,你可以传递数据,但在验证中,我认为你可以将数据发送到错误包中查看。对不起,问题仍然存在。刀片页面中没有“标题”。返回数据时出错。是否可以将数据作为正常变量发送?谢谢。我明白。再澄清一下。return view()->with()和return back()->with();with()和with()的工作方式不同。我说的对吗?确切地说-view构建通过给定数据的刀片视图文件,重定向生成HTTP重定向,并将给定数据放入会话中。Laravel会自动用会话中的错误重新填充视图(请参阅应用程序中的ShareErrorsFromSession中间件),withErrors
确实在重定向路由中创建了一个$errors
变量,但这是因为中间件ShareErrorsFromSession
导致的,这是一种特殊情况。您可能会制作自己的中间件来模拟其他变量的类似行为为什么我应该返回错误包中的数据?这不是一个错误。我不是从这里呼叫view。只有我在做验证。看,你有很多肮脏的选项,比如会话和cookie,否则,无论你从哪里调用视图,都会通过视图传递数据。