验证后如何传递额外数据?

How to pass extra data after validation?

验证后我想传递一些额外的数据来查看。但是,我无法发送它。

我的控制器就像,

public function test()
{
    $validator = Validator::make(
        request()->all(), 
        [ 'ziptest' => 'regex:/^([0-9]{3}-[0-9]{4})$/']
    );

    $errors = $validator->errors();

    if($errors->any()) {
        return back()
            ->withErrors($errors)
            ->withTitle('Data From Controller')
            ->withInput();
    }

    return 'success';
}

在我的 blade 中,我想检查标题是否通过。所以在我的 blade 视图中我有

@if($errors->any())
    @foreach($errors->all() as $error)
        <li>{{ $error }}</li>
    @endforeach
@endif

@if(isset($title))
    <p>{{ $title }}</p>
@endif

不过,错误部分显示正常。但不是标题。为什么它不起作用?

我也试过这样发标题

return back()->withErrors($errors)
    ->with('title','Data From Controller')
    ->withInput();

它也不起作用。

我在 SO 中搜索并发现了几个关于将数据从控制器传递到视图的类似问题。但是,我的情况有点不同。

你的第二种方法几乎是正确的。

return back()->withErrors($errors)
    ->with([
        'title' => 'Data From Controller'
    ])
    ->withInput();

注意数组符号

这里使用array_merge方法

    $errors = $validator->errors();

    if($errors->any()) {
      $newErrors = array_merge($errors->toArray(),['title' => 'Data From Controller']);  
      return back()
            ->withErrors($newErrors)
            ->withInput();
    }

在您的示例中,您正在重定向回之前的位置。当您使用 with* 进行重定向时,信息会 闪现到 session,而不是像您返回改为查看。

要使其与您的示例一起使用,您必须检查 session('title') 以从重定向中获取闪烁的标题。

您是否在验证挂钩后尝试过,但它会 return 错误包中的数据

 $validator->after(function ($validator) {
        $validator->errors()->add('someField', 'Somedata');
 });

我想知道你是从哪里调用视图的,因为我看到你的 test() 方法只做验证部分,在你的视图中你可以用它传递数据但我认为验证是错误的包可以发数据查看