【问题标题】:How can validate only a certain fields in php Laravel 5?如何仅验证 php Laravel 5 中的某些字段?
【发布时间】:2015-08-28 20:50:56
【问题描述】:

我目前正在我的 Laravel 应用程序中处理我的编辑表单。

我从表单提交请求所有输入。我得到了:

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();

它总是对我失败并说

The email field is required.

但如果我没记错的话,电子邮件字段就在那里。

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

【问题讨论】:

  • 我收到了显示"test@sites.com1"的电子邮件
  • 我认为 id 的串联可能是问题所在。你为什么这样做?
  • 同样的错误。这是非常有线的。当我起飞 required 时,它起作用了。但这将是一场灾难。
  • 我这样做是因为我想在编辑时忽略电子邮件的独特性。
  • 你调用函数的方式不对。首先是您要检查的数据,其次是规则。

标签: php validation laravel laravel-5


【解决方案1】:

应该是:

$validator = Validator::make($input, [
            'phone' => 'max:20',
            'email' => 'required|email|unique:users,email,'. $id ,
            'address' => 'max:255']
        );

它认为您将第一行作为要检查的数据传递,并将第二行作为验证规则。它没有找到电子邮件密钥,所以它告诉您它是必需的。

【讨论】:

  • 非常感谢。 @杰里米
【解决方案2】:

你的 Validator::make() 方法调用有点不对。

使用此函数时,第一个参数是要验证的数据数组(您的请求数据),第二个参数是您的规则数组。

您当前的代码让您传入三个参数。它将['phone' =&gt; 'max:20'] 作为您要验证的数据,['email' =&gt; 'required|email|unique:users,email,'. $id ], 作为您的规则,然后将['address' =&gt; 'max:255'] 作为您的消息数组。

应该是这样的:

$validator = Validator::make(
    Input::all(),
    [
        'phone' => 'max:20',
        'email' => 'required|email|unique:users,email,'. $id,
        'address' => 'max:255'
    ]
);

【讨论】:

  • 非常感谢。 @帕特里克斯
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 2017-03-11
  • 2020-03-01
  • 1970-01-01
  • 2015-07-28
  • 2010-12-21
  • 1970-01-01
相关资源
最近更新 更多