在刀片服务器中调用@if($ errors-> has())时,调用成员函数has()

时间:2014-12-27 00:00:00

标签: validation laravel laravel-4 ardent

我正在尝试使用Ardent从刀片模板中的表单中返回错误。这是我在控制器中使用的功能:

public function store()
{
  $subscriber = new Subscriber;

  $subscriber->first_name = Input::get('first_name');
  $subscriber->last_name = Input::get('last_name');
  $subscriber->email = Input::get('email');

  if(!$subscriber->save())
  {
    return Redirect::to('/admin/subscriber/create')->with('errors', $subscriber->errors()->all());
  }

  return Redirect::to('/admin/subscriber')->with('status', 1);
}

我在模型中的热心规则:

public static $rules = array(
  'email' => 'required|email|unique:users',
  'first_name' => 'required',
  'last_name' => 'required',
);

public static $customMessages = array(
  'first_name.required' => 'First name is required.',
  'last_name.required' => 'Last name is required.',
  'email.required' => 'Email is required.',

  'email.email' => 'Use a real email address!',
  'email.unique' => 'This email address already exists!',
);

我在我的刀片模板中调用了什么:

@if ($errors->has())
    @foreach ($errors->all() as $error)
        <div class='bg-danger alert'>{{ $error }}</div>
    @endforeach
@endif

每当我尝试输入不应在表单中验证的数据时,我会收到错误Call to a member function has() on array,该错误引用$errors->has()

有人有任何想法吗? 干杯

1 个答案:

答案 0 :(得分:3)

当您向视图提供$errors时,您可以使用:

->with('errors', $subscriber->errors()->all())

这意味着您已经调用了将错误转换为数组的all()方法。您需要删除all()来电,即:

->with('errors', $subscriber->errors())

然后,您可以像在视图中一样使用has()all()