我是laravel的新手 . 我有一个表单,我必须填写一个名称字段并将其发送到控制器store()方法进行验证 . 否则它将显示自定义错误 . 但每当我提交表格有或没有输入我收到以下错误 .
参数1传递给Illuminate \ Validation \ Factory :: make()必须是类型数组,给定字符串,在C:\ xampp \ htdocs \ mylaravel \ vendor \ laravel \ framework \ src \ Illuminate \ Support \ Facades \中调用第221行的Facade.php并定义
出于实验目的,我使用以下格式捕获用户输入
$data = $request->input('name');
create.blade.php:
<h1>login form</h1>
@if($errors->has())
<div><span> Opps !! </span></br>
<ul>
@foreach ($errors->all() as $error)
<li> {{ $error }}</li>
@endforeach
</ul>
</div>
@endif
{!!Form::open(array('url'=>'user','method'=>'POST', 'files'=>true)) !!}
{!!Form::label('name','Your name')!!}
{!!Form::text('name')!!}
</br>
{!!Form::submit('submit')!!}
{!!Form::close()!!}
store() method in userController.php file:
public function store(Request $request)
{
//
$data = $request->input('name');
$rules = array(
'name' => 'unique:users,name|required|alpha_num'
);
// Create a new validator instance.
$validator = Validator::make($data, $rules);
if($validator->fails()){
$errors=$validator->messages();
return Redirect::route('user.create')->withErrors($validator);
}else{
return Redirect::route('user.index');
}
}
}
3 回答
你需要在
Validator::make
内传递array
.现在你正在以
$data
变量的形式传递字符串 .例如 :
DOCS:https://laravel.com/docs/4.2/validation
根据你的错误,
Validator
期望它的参数是数组,但是你在那里传递一个字符串为$data= $request->input('name')
. 所以,你应该在Validator::make()
中传递数组 . 下面的代码应该适合你 .如果你想探索更多,这是doc .
你已经将params作为数组传递给验证,所以你的代码就是