Yii Framework Forum

[Solucionado] Formato Money


(Juan Diego1990) #1

Buenas tardes para todos,

Mi problema se resume en convertir un número a un formato Money, parecido al empleado por Excel al dar formato a un número, ejemplo: "1000000" a "$1.000.000", esto con el objetivo que en las vistas a medida que el usuario va digitando el número se vaya aplicando la conversión.

No sé si Yii tiene algún tipo de función que haga esta conversión o me tocaría programarlo con Ajax.

Espero me puedan ayudar con esta duda,

Muchas gracias.


(Lagocamanho) #2

Buenos días.

Igual con formatNumber

Un saludo.


(Juan Diego1990) #3

Según entiendo esta función formatea el número de acuerdo a una especificación, ahora bien, necesito formatear el número en la caja de texto del formulario, no en la clase o controlador.

Agradezco tu ayuda, igual seguiré investigando.


(Miguel Schpeir) #4

Si lo que querés es que vaya formateando a medida que el usuario escribe creería que no te queda otra que ajax. Me sumo al pedido si es esto lo que buscabas.

Saludos.


(Juan Diego1990) #5

Encontré una forma de realizar esta conversión mediante una función en Javascript utilizando el evento onkeypress, muchas gracias por la ayuda.


(Miguel Schpeir) #6

Juan, podrías subir el código?

Gracias.


(Xavieremv) #7

Chequea estos demos Jquery-maskMoney.

Y aquí la adaptación a YII moneymask


(Miguel Schpeir) #8

Xavier, me es de GRAN ayuda esto del moneymask pero tengo una consulta: como plantean en la página de la extensión, si estoy en un formulario haciendo un update, el campo sólo pone el símbolo $ pero NO los puntos y comas. Tenés idea de cómo solucionar eso?


(Xavieremv) #9

Pues te va a tocar hacerle una actualización a la extensión.

1: primero ve a la pagina oficial del plugin Jquery-maskMoney y bájate la ultima versión que esta muchooo mas actualizada que la versión que contiene extensión de YII

2: después reemplaza la versión que contiene YII por la que acabas de descargar

ubicación: /extensions/moneymask/assets/jquery.maskMoney.js

una de las mejoras que se han hecho en las actualizaciones es que han agregado el método


$("#demo5").maskMoney('mask');

que permite aplicarle el formato a un valor por defecto (value) del campo de texto.

3: modifica nuevamente la extensión para que aplica el método nuevo, y así pueda aplicarle el formato a los valores que vengan por defecto o de un update de un campo de texto.

ubicación: /extensions/moneymask/MMask.php

Reemplaza la función run por esta


 public function run() {

         isset($this->config['symbol']) ? '': $this->config['symbol'] = Yii::app()->getLocale()->getCurrencySymbol($this->currency);

         Yii::app()->clientScript->registerScript('processPrint', '

             $("'.$this->element.'").maskMoney('.json_encode($this->config).');

			 

			 $("'.$this->element.'").maskMoney("mask");

			 ');

     }



lo que hice fue agregar la siguiente linea:


$("'.$this->element.'").maskMoney("mask");

4: Finalmente borra los assets de la carpeta raíz del proyecto y prueba…


(Miguel Schpeir) #10

GENIO, ÍDOLO, MAESTRO!


(miguelcortez60) #11

No esta el linkde Yii moneymask. Podes ponerlo porfa ?