[Solucionado] Formato Money

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.

Buenos días.

Igual con formatNumber

Un saludo.

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.

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.

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

Juan, podrías subir el código?

Gracias.

Chequea estos demos Jquery-maskMoney.

Y aquí la adaptación a YII moneymask

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?

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…

GENIO, ÍDOLO, MAESTRO!

No esta el linkde Yii moneymask. Podes ponerlo porfa ?