如何只验证php Laravel 5中的某些字段?

时间:2015-06-12 18:29:33

标签: php validation laravel laravel-5

我目前正在使用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中的某些字段?

2 个答案:

答案 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'
    ]
);