mirror of
https://github.com/elyby/accounts.git
synced 2025-05-31 14:11:46 +05:30
Реализованы формы для шагов смены E-mail адреса, покрыты unit-тестами
У EmailActivation добавлено поле $_data и дописано поведение для работы с ним Упрощено подключение фикстур для EmailActivations
This commit is contained in:
47
common/behaviors/DataBehavior.php
Normal file
47
common/behaviors/DataBehavior.php
Normal file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
namespace common\behaviors;
|
||||
|
||||
use yii\base\Behavior;
|
||||
use yii\helpers\ArrayHelper;
|
||||
|
||||
class DataBehavior extends Behavior {
|
||||
/**
|
||||
* @var string имя атрибута, к которому будет применяться поведение
|
||||
*/
|
||||
public $attribute = '_data';
|
||||
|
||||
/**
|
||||
* @param string $key
|
||||
* @param mixed $value
|
||||
*/
|
||||
protected function setKey(string $key, $value) {
|
||||
$data = $this->getData();
|
||||
$data[$key] = $value;
|
||||
$this->owner->{$this->attribute} = serialize($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $key
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getKey(string $key) {
|
||||
return ArrayHelper::getValue($this->getData(), $key);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
* @throws \yii\base\ErrorException Yii2 подхватит Notice от неправильной десериализаци и превратит его
|
||||
* в свой Exception, благодаря чему программа сможем продолжить нормально работать (вернее ловить Exception)
|
||||
*/
|
||||
private function getData() {
|
||||
$data = $this->owner->{$this->attribute};
|
||||
if (is_string($data)) {
|
||||
$data = unserialize($data);
|
||||
} else {
|
||||
$data = [];
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user