yii2-translateable icon indicating copy to clipboard operation
yii2-translateable copied to clipboard

afterValidate

Open Skinka opened this issue 9 years ago • 1 comments

/**
 * @return void
 */
public function afterValidate()
{
    if (!Model::validateMultiple($this->owner->{$this->translationRelation})) {
        $this->owner->addError($this->translationRelation);
         foreach ($this->owner->{$this->translationRelation} as $model) {
            /** @var ActiveRecord $model */
            if ($model->hasErrors()){
                $this->owner->addErrors($model->getErrors());
            }
        }
   }
}

А то если валидация не проходит возвращается пустая ошибка от релейшена! а так будут ошибки модели возвращаться.

Skinka avatar Apr 29 '15 13:04 Skinka

    public function afterValidate()
    {
        /** @var ActiveRecord[] $translations */
        $translations = $this->owner->{$this->translationRelation};
        $attributeNames = null;
        if (!empty($translations)) { // get 1st, all models are same
            $attributeNames = array_keys($translations[0]->getAttributes());
            $attributeNames = array_combine($attributeNames, $attributeNames); // key = value
            if ($this->owner->getIsNewRecord()) {
                foreach ($this->owner->getRelation($this->translationRelation)->link as $a => $b) {
                    //skip FK checks, our record will be saved later and we trust Yii2 it will have correct ID
                    unset($attributeNames[$a]);
                }
            }
        }

        if (!Model::validateMultiple($translations, $attributeNames)) {
            $errors = [];
            foreach ($translations as $model) {
                if ($model->hasErrors()){
                    $errors = $model->getErrors();
                }
            }

            $this->owner->addError($this->translationRelation, $errors);
        }
    }

yurii-github avatar Nov 20 '17 10:11 yurii-github