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);
}
}
}