我正在尝试使用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()
有人有任何想法吗? 干杯
答案 0 :(得分:3)
当您向视图提供$errors
时,您可以使用:
->with('errors', $subscriber->errors()->all())
这意味着您已经调用了将错误转换为数组的all()
方法。您需要删除all()
来电,即:
->with('errors', $subscriber->errors())
然后,您可以像在视图中一样使用has()
和all()
。