Laravel刀片“在数组上调用成员函数has()”

时间:2019-11-07 02:54:03

标签: php laravel laravel-blade

控制器:

session(['errors' => ['email' => ['The email is invalid.']]]);
return view('auth.login');

刀片:

@if ($errors->has('email'))
   <span class="help-block">
      <strong>{{ $errors->first('email') }}</strong>
   </span>
@endif

错误:

  

在数组上调用成员函数has()

我在数组之前尝试过(object),返回view()-> with()等等! 但是我总是会收到这个错误!!

如果可能,我不想更改刀片文件!!无论如何,有没有以正确的方式从控制器发送数据?

1 个答案:

答案 0 :(得分:3)

Validator返回的$ errors是Illuminate \ Support \ MessageBag的一个实例,而不是一个数组;

要复制用法,请执行以下操作: 在您的控制器中,您可以:

use Illuminate\Support\MessageBag;

// Create a new MessageBag instance in your method.
$errors = new MessageBag;

// Add new messages to the message bag.
$errors->add('email', 'The email is invalid.');

return view('auth.login', ['errors' => $errors]);

我认为您应该使用另一个变量名,例如$ customErrors,以确保将来可以根据需要使用view('auth.login')-> withErrors($ validator)。 https://laravel.com/docs/5.8/validation#working-with-error-messages