Php Yii2中的模型表单规则和验证

Php Yii2中的模型表单规则和验证,php,yii,yii2,Php,Yii,Yii2,例如,我有模型表单MySubmitForm: use yii\base\Model; class MySubmitForm extends Model{ public $value1; public $value2; public $value3; public function rules(){ return [['value1', 'value2'],'required']; } } 这里我有两个必需的参数($value1

例如,我有模型表单
MySubmitForm

use yii\base\Model;

class MySubmitForm extends Model{


    public $value1;
    public $value2;
    public $value3;

    public function rules(){
         return [['value1', 'value2'],'required'];
    }

}
这里我有两个必需的参数(
$value1
$value2
),我希望其中一个是必需的,或者我希望只有当
$value1
$value2
都为空时,用户才得到错误


我可以从这个表单模型中实现这一点吗

您可以在验证规则中使用自定义验证函数

可能的选择:

1)选择最重要的相关字段并向其添加错误

2)选择多个重要的相关字段,并向其添加相同的错误消息(我们可以在传递之前将消息存储并传递到单独的变量中,以保持代码干燥)

3)我们可以使用notexisting属性名称来添加错误,比如说
all
,因为此时不检查属性是否存在

public function rules()
{
    return [['value1', 'value2'],'yourCustomValidationMethod'];
}

public function yourCustomValidationMethod()
{
    // Perform custom validation here regardless of "name" attribute value and add error when needed
    if ($this->value1=='' && $this->value2=='') {
        //either use session flash 
        Yii::$app->session->setFlash('error','You need to provide one of the fields');

        //or use model error without any specific field name 
        $this->addError('all', 'Your error message');
    }            
}

注意:您可以使用
会话闪存
模型
来通知错误使用,您可以随意使用它

刚才为您添加了一个答案,看看这是否对您有帮助。非常有用的答案很高兴我能帮您解决:)