Я пытаюсь преобразовать данные по атрибуту, используя метод setter setUsr_firstname
для атрибута, который называется usr_firstname
.Yii2: пользовательский метод настройки/преобразование данных не работает на ActiveRecord?
class User extends ActiveRecord implements IdentityInterface {
public function rules() {
return [
[['usr_firstname', 'usr_lastname', ... ], 'required'],
...
];
}
...
public function setUsr_firstname($value) {
$this->usr_firstname = fix_wrong_title_case($value);
}
}
Тогда я сделать следующее: не
$model = new User(['scenario' => User::SCENARIO_REGISTER]);
$model->usr_firstname = 'John';
Но метод установки не вызывается! Я пробовал называть метод всевозможными вещами - например. setUsrFirstname
- но ничего не работает. Как мне заставить это работать?
UPDATE
Разобрался это не работает для любого атрибута ActiveRecord, с или без подчеркивания в имени атрибута.
Так вы говорите, что с помощью метода 'public function setUsrFirstname ($ value) {$ this-> usr_firstname = fix_wrong_title_case ($ value); } 'и называя его как' $ model-> setUsrFirstname ('John'); 'он не работает? – Bizley
@Bizley Нет, я не называю метод setter напрямую - вот в чем смысл преобразования данных Yii. Каждый раз, когда атрибут 'usr_firstname' изменяется в любом месте системы, Yii должен автоматически вызывать метод setter' setUsr_firstname' и запускать значение до этого, прежде чем устанавливать его в модели/объекте. – TheStoryCoder
Это не работает в случае свойств, объявленных непосредственно или атрибутов Active Record (независимо от того, имеет ли это знак подчеркивания или нет). – Bizley