我目前正在使用Laravel应用程序中的编辑表单。
我请求表单提交的所有输入。我得到了:
for item in row_names, col_names:
if row_names[item] != col_names[item]:
print item
我的目标是仅验证:电话,电子邮件和地址。
我试过
array:6 [▼
"_method" => "PUT"
"_token" => "iWyonRYFjF15wK8fVXJiTkX09YSPmXukyGbBcHRA"
"phone" => "9786770863"
"email" => "test@sites.com1"
"address" => "23 School St Lowell MA 01851"
"$id" => "1"
]
它一直不及格我说
$validator = Validator::make(
['phone' => 'max:20'],
['email' => 'required|email|unique:users,email,'. $id ],
['address' => 'max:255']
);
// dd(Input::get('email')); // HERE <------ I got the email to display
if ( $validator->fails()) {
return Redirect::to('user/profile/'. $id )->withErrors($validator)->withInput();
} else {
$user = User::findOrFail($id);
$user->phone = Input::get('phone');
$user->email = Input::get('email');
$user->address = Input::get('address');
$user->save();
但如果我没记错,电子邮件字段就在那里。
如何只验证php Laravel 5中的某些字段?
答案 0 :(得分:3)
应该是:
$validator = Validator::make($input, [
'phone' => 'max:20',
'email' => 'required|email|unique:users,email,'. $id ,
'address' => 'max:255']
);
它认为您将第一行作为要检查的数据传递,第二行作为验证规则。它没有找到电子邮件密钥,因此它告诉您它是必需的。
答案 1 :(得分:3)
您的Validator::make()
方法调用有点过时了。
使用此功能时,第一个参数是要验证的数据数组(您的请求数据),第二个参数是您的规则数组。
您当前的代码是否传递了三个参数。它会将['phone' => 'max:20']
视为您要验证的数据,['email' => 'required|email|unique:users,email,'. $id ],
作为您的规则,然后['address' => 'max:255']
作为您的消息数组。
它应该是这样的:
$validator = Validator::make(
Input::all(),
[
'phone' => 'max:20',
'email' => 'required|email|unique:users,email,'. $id,
'address' => 'max:255'
]
);