yii2-translateable
yii2-translateable copied to clipboard
afterValidate
/**
* @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());
}
}
}
}
А то если валидация не проходит возвращается пустая ошибка от релейшена! а так будут ошибки модели возвращаться.
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);
}
}