Yii Framework Forum: Yii::app()->NumberFormatter->formatDecimal() - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Yii::app()->NumberFormatter->formatDecimal() kürzerer Aufruf? Rate Topic: -----

#1 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 04 October 2009 - 10:07 AM

Gibt es einen alternativen Aufruf?

echo Yii::app()->NumberFormatter->formatDecimal( "123456789", "USD");

Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

#2 User is offline   Mike 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 3,013
  • Joined: 06-October 08
  • Location:Upper Palatinate

Posted 04 October 2009 - 02:02 PM

Meintest du so?
echo Yii::app()->NumberFormatter->formatCurrency( "123456789", "USD");


formatDecimal() erwartet ja nur einen Parameter. Oder was genau willst du erreichen?
0

#3 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 04 October 2009 - 03:10 PM

View PostMike, on 04 October 2009 - 02:02 PM, said:

Meintest du so?
echo Yii::app()->NumberFormatter->formatCurrency( "123456789", "USD");


formatDecimal() erwartet ja nur einen Parameter. Oder was genau willst du erreichen?


sorry, habe mich undeutlich ausgedrückt.
Es geht um diesen Teil, ob man das irgendwie verkürzen kann. "Yii::app()->NumberFormatter->"
Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

#4 User is offline   yoshi 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 170
  • Joined: 28-February 09
  • Location:Germany

Posted 04 October 2009 - 03:59 PM

$nf = Yii::app()->NumberFormatter;
...
echo $nf->formatCurrency( "123456789", "USD");


? :)???:blink:
0

#5 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 04 October 2009 - 04:00 PM

View Postyoshi, on 04 October 2009 - 03:59 PM, said:

$nf = Yii::app()->NumberFormatter;
...
echo $nf->formatCurrency( "123456789", "USD");


? :)???:blink:

thx!!!!
Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

#6 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 04 October 2009 - 04:00 PM

echo Yii::app()->NumberFormatter->format("#,##0.00", "123456789", "EUR");


(falsch) führt zu
123,456,789.00


und nicht zu (richtig)
123.456.789,00


Laut http://www.yiiframew...r#format-detail habe ich alles richtig gemacht
Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

#7 User is offline   yoshi 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 170
  • Joined: 28-February 09
  • Location:Germany

Posted 04 October 2009 - 04:21 PM

Hi,

der CNumberFormatter wird von deinen locale-Einstellungen beeinflusst!

Füge mal folgendes zu deiner Konfiguration in der main.php hinzu:
'language'=>'de',


Jetzt sollte alles wie erwartet aussehen ;-)
0

#8 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 04 October 2009 - 04:23 PM

hehe,
jetzt klappt es!!! Aber es muss doch auch irgendwie mit dem "currency" - Parameter funktionieren
Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

#9 User is offline   yoshi 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 170
  • Joined: 28-February 09
  • Location:Germany

Posted 04 October 2009 - 04:32 PM

Japp, aber dazu musst du den Währungsplatzhalter in dein Pattern aufnehmen:
echo Yii::app()->NumberFormatter->format("#,##0.00¤", "123456789", "EUR");


ergibt: 123.456.789,00€

¤ <- das komische Ding ist der Währungsplatzhalter (siehe Docu)
1

#10 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 04 October 2009 - 04:38 PM

echo Yii::app()->NumberFormatter->format("#,##0.00 €", "123456789", "EUR");


Habe das soweit gemacht jedoch funktioniert, dass nur wenn ich 'language' => 'de' in der config eintrage. Aber ist auch egal, hauptsache es funktioniert.

Kannst du mir vielleicht bei meinem "MANY-MANY-MANY" Problem weiterhelfen?
http://www.yiiframew...many-beziehung/
Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

#11 User is offline   balrok 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 61
  • Joined: 13-June 10

Posted 02 January 2011 - 08:25 AM

Hallo, danke für die hilfreichen Kommentare

Noch zum Tema wie das ganze verkürzt werden kann:
In meiner index.php hab ich die Zeile:
include "protected/components/shortcut.php"; ganz oben

In dieser datei stehen alle meine Hilfsfunktionen die ich global benutze.. dort kann dann für das Zahlenformatieren z.B. folgendes rein:
function formatCurrency($number, $cur='EUR')
{
    return Yii::app()->NumberFormatter->format("#,##0.00¤", $number, $cur);
}

Jetzt lässt sich jeder Preis in dem programm ganz kurz mit:
formatCurrency(123.56) formatieren
Ein weiterer Vorteil ist, dass mit zukünftigen, geänderten, Anforderungen der Code nur in diesem Punkt geändert werden braucht (z.B. kann man eine Switchanweisung einbauen. die je nach language die Zahl anders formatiert)
0

#12 User is offline   Mike 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 3,013
  • Joined: 06-October 08
  • Location:Upper Palatinate

Posted 03 January 2011 - 04:05 AM

Noch ein kleiner Tip: Wenn eine dieser Helper-Funktionen oft aufgerufen wird, sollte sie so "sparsam" wie möglich geschrieben sein. In deinem Fall führt z.B. jeder Aufruf von formatCurrency() zu 3 weiteren Funktionsaufrufen:

Yii::app(), getNumberFormatter() und dann eben format(). Stattdessen könnte man den formatter auch in einer statischen Variable vorhalten, damit bleibt ab dem 2. Aufruf nur noch 1 Funktionsaufruf übrig:

static $formatter=null;
if ($formatter===null)
    $formatter=Yii::app()->numberFormatter;
return $formatter->format(...)

1

#13 User is offline   banago 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 20
  • Joined: 10-March 11
  • Location:Piz da Dufour

Posted 16 August 2012 - 01:35 PM

Hallo,
Das ist eine gute Idee denke ich, aber wie bzw. an welcher Stelle muss das eingebaut werden ?


static $formatter=null;
if ($formatter===null)
    $formatter=Yii::app()->numberFormatter;
return $formatter->format(...)




View PostMike, on 03 January 2011 - 04:05 AM, said:

Noch ein kleiner Tip: Wenn eine dieser Helper-Funktionen oft aufgerufen wird, sollte sie so "sparsam" wie möglich geschrieben sein. In deinem Fall führt z.B. jeder Aufruf von formatCurrency() zu 3 weiteren Funktionsaufrufen:

Yii::app(), getNumberFormatter() und dann eben format(). Stattdessen könnte man den formatter auch in einer statischen Variable vorhalten, damit bleibt ab dem 2. Aufruf nur noch 1 Funktionsaufruf übrig:

static $formatter=null;
if ($formatter===null)
    $formatter=Yii::app()->numberFormatter;
return $formatter->format(...)


0

#14 User is offline   Mike 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 3,013
  • Joined: 06-October 08
  • Location:Upper Palatinate

Posted 16 August 2012 - 01:40 PM

View Postbanago, on 16 August 2012 - 01:35 PM, said:

Das ist eine gute Idee denke ich, aber wie bzw. an welcher Stelle muss das eingebaut werden ?


Na in deiner Hilfsfunktion. Ersetz einfach deine einzelne Zeile mit dem obigem Beispiel.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

2 User(s) are reading this topic
0 members, 2 guests, 0 anonymous users