Adicionar Attribute No Activerecord

Estou tentando adicionar um atributo extra na minha model, mas sem sucesso.

Adicionei a model o atributo:


...

public $extraAttr;

...

e no safe, em rules


...

array('extraAttr', 'safe'),

...

Mesmo assim, este atributo nao aparece em:


$model->attributes

Só consigo acessá-lo pelo:


$model->extraAttr

Mas preciso ter acesso a ele pelo aattributes da model. Como fazer?

Obrigado!

Você precisa reescrever o método "getAttributes" no seu modelo





public function getAttributes($names=true)

{

    $attributes = parent::getAttributes($names=true);

    $attributes['seu_atributo'] = 'UM_VALOR_QUALQUER';

    return $attributes;

}



Uma boa opcao, mas se alguem tiver algo mais nativo …

Obrigado!

Fabio

Basta adicionar uma linha no metodo attributeLabels() com o atributo que você quer adicionar no model, o resto você fez certo, não precisa reescrever metodos.

‘digi_codigo’ => ‘Digi Codigo’,

Apos isso pode criar varias rules pra esse atributo.

Obrigado Railton, mas isso nao funcionou.

Verdade, testei aqui.

Não existe outra forma. O método getAttributes retorna todas as colunas da tabela no banco de dados, se você quiser informações adicionais terá que reescrever este método. É por isso que seu modelo herda da classe CActiveRecord, para você adapta-lo da forma que lhe convém. Em outras palavras, use orientação a objetos (POLIMORFISMO neste caso).

Obrigado! ;)