Yii наследует метки атрибутов

#yii

#yii

Вопрос:

С фреймворком Yii php я использую наследование.

В моей AbstractModel у меня есть этот метод:

 public function attributeLabels()
    {
        return array(
            '0'=>Yii::t('default','No'),
            '1'=>Yii::t('default','Yes'),
        );
    } 
  

В моем объекте, который расширяет AbstractModel, у меня есть этот метод:

 public function attributeLabels()
    {
        return array(
            'username' => Yii::t('user', 'email'),

        );
    }
  

В файле представления я использую:

 <?php echo CHtml::activeLabel($model, $model->property);?>
  

Но я никогда не показываю «Нет» или «Да» из asbtractModel. Если я помещу все в свою модель, это сработает. Но я хочу использовать наследование.
Как я могу объединить родительские метки атрибутов с метками атрибутов текущей модели?

Комментарии:

1. Потому что вы переопределяете метод attributeLabels() из родительского класса. Вы должны объединить его, как решение от schmunk.

Ответ №1:

Просто объедините возвращаемое значение родительского метода в MyObject (класс модели):

   public function attributeLabels() {
    return array_merge(
      parent::attributeLabels(),
      array(
        'username' => Yii::t('user', 'email'),
      )
    );
  }
  

Вы также можете использовать CMap::mergeArray().