Php Yii2验证字段为电子邮件(如果不是数字)
在我的项目中,我有以下课程:Php Yii2验证字段为电子邮件(如果不是数字),php,validation,yii2,Php,Validation,Yii2,在我的项目中,我有以下课程: <?php namespace app\models; use Yii; use yii\base\Model; class Contact extends Model { public $fullname; public $info; public function rules() { return [ ['fullname','info'],'required'
<?php
namespace app\models;
use Yii;
use yii\base\Model;
class Contact extends Model
{
public $fullname;
public $info;
public function rules()
{
return [
['fullname','info'],'required'
];
}
}
为了完成这个自定义验证器,您可以进行分配,在beforeValidate()中使用输入等等。就个人而言,最好的方法是设定情景。在验证模型之前,请在控制器中使用(is_numeric())检查用户输入是否为数字,如果未将场景设置为“something1”,则将场景设置为“mail”。这样,您就不必担心验证问题,因为您将在不同的场景中为同一属性设置两个规则。一个规则是电子邮件,另一个可以是integerOnly或类似的东西。希望有帮助。您可以定义一个内联函数来验证规则中的字段。在你的情况下,我想你可能会这样做:
public function rules()
{
return [
['contact', 'validateContact'],
];
}
public function validateContact($attribute, $params)
{
if ( !is_numeric($this->$attribute) ) {
$validator = new yii\validators\EmailValidator();
if ($validator->validate($this->$attribute, $error)) {
echo 'Email is valid.';
} else {
echo $error;
}
} else {
echo 'Contact is number';
}
}
更多信息:
(一)
(二)