以下是带有内联验证规则的模型代码。
namespace app\models;
use Yii;
class Country extends \yii\db\ActiveRecord
{
public static function tableName()
{
return 'country';
}
public function rules()
{
return [
...other rules...
['pan_no', 'checkPanCardUsers', 'skipOnEmpty' => false, 'skipOnError' => false]
];
}
public function checkPanCardUsers($attribute, $params)
{
...some condition ...
$this->addError($attribute, 'custom error message');
}
}
控制器代码
public function actionSomeAction()
{
$model = new Country();
if ($model->load(Yii::$app->request->post()) {
if($model->validate()) {
$model->save();
}
}
return $this->render('country', [
'model' => $model,
]);
}
但验证无效。
答案 0 :(得分:2)
当然,只需在规则中使用以下内容,即可调用您的函数。
['pan_no', 'checkPanCardUsers', 'skipOnEmpty' => false, 'skipOnError' => false]
并在条件错误时在函数中添加错误。
public function checkPanCardUsers($attribute, $params)
{
//...some condition ...
if (!$this->$attribute !='test')
$this->addError($attribute, 'custom error message');
}
奇怪的是,它完美地适用于我的测试......
检查您是如何创建模型的,例如关于创建行动:
$model = new ModelName();