Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

We've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

Archive /

Our old forums are still available as a read-only archive.

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo

CurrencyField Format


Go to End


7 Posts   4493 Views

Avatar
Aaron

Community Member, 63 Posts

8 June 2008 at 9:56pm

Hi there,
I'm doing a custom sales solution and we are selling products that are available in 4 Currencies, US, UK, AUS and NZ
I have added four CurrencyFields to the cms, however I notice that after saving, the default behavior is to put '$' symbols in the field.
Am I able to change the currency format on a per-field basis?
Also, what's the deal with validation? I am able to enter 'ddddfd' into any of these fields without an error being thrown.
Cheers
Aaron

Avatar
zyko

Community Member, 66 Posts

10 June 2008 at 8:23pm

Edited: 10/06/2008 8:23pm

subscribe...

i wasn't even able to get the $ sign away globally... fe with €
to get it on a 'format-field'-level would make things more right too..

Avatar
Aaron

Community Member, 63 Posts

13 June 2008 at 10:55am

Edited: 13/06/2008 10:56am

Well, It either isn't possible or we're simply not going to get an answer (probably both). I've found nada in my digging.

I will be using a decimal field and hardcoding the currency format into it. (And definately not trusting silverstripe to take care of calculations - I will be POST-ing to standalone PHP pages for that.

Avatar
Willr

Forum Moderator, 5523 Posts

13 June 2008 at 1:35pm

Line 16 - 23 of Currency.php

function Nice() {
return '$' . number_format($this->value, 2);
}

function Whole() {
return '$' . number_format($this->value, 0);
}

Try changing the $. I would assume this is where it is coming from!. You might like to abstract this out and submit is as a patch. It shouldnt be hardcoded in the core I would have thought

Avatar
Double-A-Ron

Community Member, 607 Posts

13 June 2008 at 2:10pm

Thanks Willr,

I'll look into that but I'm outta time on this project now.

I will look at the patch submission process, as ideally, I think this currency symbol is best tied to each field.

Do you see a problem with passing the symbol as an argument? I'm a bit fresh in terms of what can be passed. I know that you can't pass variables as arguments.

e.g.

function Nice($symbol = '$') {
      return $symbol . number_format($this->value, 2);
   }
   
   function Whole($symbol = '$') {
      return $symbol . number_format($this->value, 0);
   } 

Avatar
Willr

Forum Moderator, 5523 Posts

13 June 2008 at 4:33pm

hmm makes it interesting to have 2 different symbols on the same page. Passing it as an argument with a default might be the best / easiest way!

Avatar
Ingo

Forum Moderator, 801 Posts

17 June 2008 at 11:41pm

localization of dates/currencies etc is not implemented yet for silverstripe,
but its pretty easy to subclass e.g. CurrencyField to return different formats for Nice() etc

for validation, we're currently migrating to the jquery validate plugin, which should provide more solid (and already localized) clientside support.