Я нашел решение. Symfony / Form имеет отличную возможность добавить преобразователи вида , которые отображаются прямо перед отрисовкой элемента формы.
Вот мой FormType
:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('amount', NumberType::class, array(
'required' => true,
'scale' => 4,
));
$builder->get('amount')->addViewTransformer(new CallbackTransformer(
function ($forward) {
// Transform the lithuanian minus sign to the normal minus sign.
return preg_replace('/\x{2212}/u', '-', $forward);
},
function ($reverse) {
return $reverse;
}
));
// others form elements...
}
Этот подход позволяет переопределить преобразователь вида по умолчанию для \Symfony\Component\Form\Extension\Core\Type\NumberType
, который добавляет spesifi c знак минус.
$builder->addViewTransformer(new NumberToLocalizedStringTransformer(
$options['scale'],
$options['grouping'],
$options['rounding_mode'],
$options['html5'] ? 'en' : null
));
Для ясности, преобразователь вида добавленный в настраиваемой форме имеет более высокий приоритет над любыми другими встроенными трансформаторами.
Это не решает проблему в целом для NumberFormatter
, но помогите мне решить мою проблему.