Yii2 как создать правило (фильтр) для всех атрибутов модели?

Скучно применять фильтр "trim" для каждого атрибута в модели. Любая идея имеет Yii2 что-то вроде этого:

['*', 'filter', 'filter' => 'trim'],

2 ответа

Ну, насколько я знаю, вы должны указать атрибуты, чтобы применить любые основные валидаторы, такие как required или же filter следующим образом

[['attribute_1', 'attribute_2'], 'filter','filter' => 'trim'],

но похоже, что вам становится лень писать все их имена и хотите, чтобы валидатор фильтра применялся ко всем атрибутам автоматически, вам нужно использовать php функции array_keys а также implode как ниже

[[implode(',', array_keys($this->attributes))], 'filter','filter' => 'trim'],

Надеюсь, это поможет вам

Если у кого-то есть более интересные идеи, пишите.

public function beforeSave($insert)
    {
        foreach ($this->getDirtyAttributes() as $attName => $attValue) {
            if ($attValue && self::getTableSchema()->columns[$attName]->phpType == 'string') {
                $this->{$attName} = trim($attValue);
            }
        }
}
Другие вопросы по тегам