![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 8 Dołączył: 5.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Doszedłem w swoim projekcie do problemu lokalizacji liczb zmiennoprzecinkowych. O ile niemam problemu z ich wyswietlaniem, format_number wyswietla mi przecinek odcielajacy czesc dziesietna od calkowitej, to juz przy wprowadzaniu danych mam problem. sfNumberValidator przyjmuje mi tylko wartosci z kropka, a z przecinkiem traktuje jako NaN. No i brakuje czegos takiego jak sfI18N::getDateForCulture dla liczb. Dodatkowo przy edycji jakiejs liczby, wartosc domyslna rowniez jest z kropka (object_input_tag widocznie nierespektuje ustawien lokallizacji). Narazie uzywam symfony 1.0. Nie znam jeszcze nowego frameworka formularzy z 1.2, ale z tego co widze w kodzie validatora (sfValidatorNumber.class.php) to rowniez nie intersuja go ustawienia lokalizacji. Dlatego chcialbym sie spytac jak wy radzicie sobie w takiej sytuacji, bo niechce zmuszac userow do wprowadzania kwot z kropkami ![]() Pozdrawiam. Ten post edytował Theqos 5.12.2008, 12:14:04 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Możesz napisac filtr, który będzie filtrował liczby zgodnie z lokalizacją.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 8 Dołączył: 5.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Interesujacy pomysl. Na probe napisalem sobie taki prosty filtr:
Kod class numberFilter extends sfFilter { public function execute($filterChain) { $request = $this->getContext()->getRequest(); $params = $request->getParameterHolder()->getAll(); foreach ($params as &$param) { $param = str_replace(',','.',$param); } $filterChain->execute(); $pattern = '/value=\"(\d*)\\.(\d*)\"/i'; $replacement = 'value="$1,$2"'; $response = $this->getContext()->getResponse(); $response->setContent(preg_replace($pattern, $replacement, $response->getContent())); } } No i nie wiem czy to troche nie overkill filtrowac cale dlugie strony, jak input taga z liczbami mam tylko w paru miejscach. Daloby sie jakos ograniczcyc filtr do akcji albo modulu? Filtrowanie wszystkich parametrow to tez pewnie nietrafiony pomysl, szczegolnie ze mi zamienia ',' na '.' w miejscach gdzie tego nie potrzebuje ![]() |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Hmm, no trochę zabawy.
Jeszcze prościej można nadpisać settery i gettry dla klas modeli. Wtedy nie bedziesz musiał się w ogóle przejmować tym co wkładasz. Setter sam sobie zapisze liczbę w dobrym formacie a getter ją zwróci. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 8 Dołączył: 5.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
No w sumie tak, ale to tez troche roboty i raczej to nie przejdzie przez walidator. Dalem sie zwiesc dokumentacji do symfony, ze "symfony natively automates all the aspects of internationalization"
![]() ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 04:35 |