symfony2: как использовать точки вместо запятой для десятичного разделителя при сохранении локали fr

В Symfony 2, с французской локалью по умолчанию, в некоторых случаях разделитель десятичных значений отображается в виде запятых в формах.

Запятые в формах не всегда преобразуются в точки, которые используются в моей базе данных в качестве разделителя.

Как я могу убедиться, что каждая запятая числового поля данных заменяется точкой после отправки формы?

Я нашел NumberToLocalizedStringTransformer:

Эта ссылка но нужно ли добавлять преобразователь данных в каждую форму, чтобы она работала так, как я хочу?

0

Решение

Использование DataTransformer является одним из подходов к решению вашей проблемы локализации. Вам не нужно добавлять его в каждую форму. Вы можете создать свой собственный FormType, расширяющий или наследующий (я думаю) number тип. В вашем собственном типе формы добавьте преобразователь с вызовом FormBuilderInterface::addViewTranformer(),

Вы можете найти больше информация здесь. Вот пример из одного из моих собственных типов. Используя этот метод, вы также можете настроить виджет, используемый для рендеринга.

class CustomType extends NumberType
{
public function buildForm ( FormBuilderInterface $builder, array $options )
{
parent::buildForm( $builder, $options );

$builder->addViewTransformer( new CustomTransformer() );
}

public function getName()
{
return 'my_custom_type';
}
}

Затем, когда вы хотите использовать свои локализованные номера, создайте свою форму с my_custom_type вместо number,

Другим решением было бы заставить ваших пользователей использовать баллы, показывая ошибку, если они используют что-то еще. Смотри сюда для проверки формы Symfony. Regex валидатор с чем-то вроде /^(\d|\.)+$/ должно сработать.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector