我正在尝试编写一个规则来验证是否设置了attribute_a或attribute_b;
必须设置以下属性之一:licitatii_publice或licitatiile_atribuite
以下代码不起作用;
<?php
namespace common\models;
use yii\base\Model;
class AbonamentValidare extends Model {
public $licitatii_publice;
public $licitatiile_atribuite;
public $zone;
public $judete;
public $tari;
public static $targetAttribute = [];
public function rules() {
return [
[['zone'], 'required'],
[['licitatii_publice', 'licitatiile_atribuite', 'tari', 'judete'], 'safe'],
['licitatii_publice', 'validate_tip_licitatie', 'targetAttribute' => ['licitatii_publice', 'licitatiile_atribuite']],
];
}
function validate_tip_licitatie($attribute, $param) {
print_r($attribute);
$this->addError($attribute, 'eroarea');
}
public function attributeLabels() {
return array(
'licitatii_publice' => 'lp',
'licitatiile_atribite' => 'la',
'tari' => 'tari',
'judete' => 'judete',
'zone' => 'zone',
);
}
public function save() {
return false;
}
}
?>
Run Code Online (Sandbox Code Playgroud)
小智 6
只想更新Yii2案例的答案.
在Yii2中,验证器具有skipOnEmpty默认设置为的属性true.这意味着如果字段为空,则不会调用自定义验证器,这可能不是必需的行为,尤其是在这种情况下,其中一个属性是必需的.为了解决这个问题,我们需要将其设置skipOnEmpty为false,如下所示.
[['licitatii_publice, licitatiile_atribuite'], 'validate_tip_licitatie', 'skipOnEmpty'=> false],
Run Code Online (Sandbox Code Playgroud)