item instanceof Item) { $this->itemName = $this->item->name; $this->name = $this->item->name; $this->description = $this->item->description; $this->children = array_keys($this->getAuthManager()->getChildren($this->item->name)); if ($this->item->ruleName !== null) { $this->rule = get_class($this->getAuthManager()->getRule($this->item->ruleName)); } } } /** * {@inheritdoc} */ public function attributeLabels() { return [ 'name' => Yii::t('user', 'Name'), 'description' => Yii::t('user', 'Description'), 'children' => Yii::t('user', 'Children'), 'rule' => Yii::t('user', 'Rule'), ]; } /** * {@inheritdoc} */ public function scenarios() { return [ 'create' => ['name', 'description', 'children', 'rule'], 'update' => ['name', 'description', 'children', 'rule'], ]; } /** * {@inheritdoc} */ public function rules() { return [ ['itemName', 'safe'], ['name', 'required'], ['name', 'match', 'pattern' => '/^[\w][\w-.:]+[\w]$/'], [['name', 'description', 'rule'], 'trim'], [ 'name', function () { if ($this->getAuthManager()->getItem($this->name) !== null) { $this->addError('name', Yii::t('user', 'Auth item with such name already exists')); } }, 'when' => function () { return $this->scenario == 'create' || $this->item->name != $this->name; }, ], ['children', RbacItemsValidator::class], ['rule', RbacRuleValidator::class], ]; } /** * @return bool */ public function getIsNewRecord() { return $this->item === null; } /** * @return Item */ abstract public function getType(); }