Estoy trabajando con Yii y tengo la siguiente situación:

Tengo una tabla MySQL:

charges {
    id INT AUTOINCREMENT,
    name VARCHAR(256),
    value DOUBLE
}

Entonces tengo el modelo de esta tabla. Y finalmente tengo las vistas para crear, listar, administrar, actualizar y ver.

En las vistas admin y view quiero mostrar el campo value formateado con dos números decimales. Una opción para hacer esto podría estar en los archivos ver y admin formatear el número. ¿Hay alguna manera de crear un método en el modelo y luego no tener que hacer nada en las vistas, pero el método en sí resolverá formatear el número?

Gracias

1
ivantxo 26 abr. 2012 a las 09:19

1 respuesta

La mejor respuesta

Puede anular el método afterFind () de CActiveRecord en su modelo y formatee el campo value en él.

Alternativamente, también puede declarar un atributo virtual del modelo, configurarlo en el método afterFind () y usar este atributo virtual en las vistas.

Ejemplo (con atributo virtual):

Class ChargesModel extends CActiveRecord{
    public $valueModified;

    /*
     * other code
     */

    protected function afterFind(){
        parent::afterFind();
        // in the following line i'm just making $valueModified and $value equal, but obviously you would have to insert the 2 decimals
        $this->valueModified=$this->value;
    }
}

Entonces puede acceder al atributo virtual de esta manera: $modelObject->valueModified

Le recomendaría que use el atributo virtual, porque luego tiene tanto el $value sin modificar como el $modifiedValue modificado, una vez que el formateo está terminado, podemos usar cualquiera de los dos según sea necesario y no tener que volver a formatear original cuando necesitamos el original.

3
bool.dev 26 abr. 2012 a las 11:09