我的应用程序更喜欢de
作为区域设置来显示1.234.567,89而不是1,234,567.89(或1234567,89而非1234567.89)等数字。
所以我更改了config.yml
:
parameters:
locale: de
此外,我使用 NumberType 生成表单字段:
class MyFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('myNumber', NumberType::class, [
'label' => 'Tax [EURO]',
'required' => false,
'scale' => 2,
'attr' => array(
'min' => 0,
'max' => 9999.99,
'step' => 0.01,
),
]);
}
}
现在, myNumber 的值显示为生成的HTML5输入字段的德语格式化数字,该字段既可以工作也可以显示任何数字。如果我将语言环境更改为en
,一切正常。
IMO html5输入字段需要填充英文格式的数字。但是我如何设法输出数字而不是德语呢?
使用区域设置de
,该字段不工作。尽管使用德语格式化的数字正确填充了value属性,但该值不会显示在生成的输入字段中:<input type="number" value="1234567,89">
使用区域设置en
,该字段有效:<input type="number" value="1234567.89">
有趣的事实:我的浏览器(Firefox 45.9.0和谷歌浏览器v54.0.2840.71,debian / 64位)检测到我的计算机的区域设置 de 并显示该号码即使我将应用程序的语言环境转换为en
(number
类型的onlinput字段),也可以作为德语格式的数字
添加lang属性<html lang="{{ app.request.locale }}">
没有帮助。
非常感谢!
答案 0 :(得分:1)
解决了问题...不要将symfony的 NumberType
用于 HTML5 类型{的输入元素{1}}!
而是使用常见的number
表单类型
TextType
并通过模板添加属性public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('myNumber', TextType::class, [...]);
}
。例如,使用Twig引擎,您可以使用以下代码:
type="number"
答案 1 :(得分:0)
您可以尝试设置html lang属性
<html lang="de">
但我认为你应该使用模式属性而不是数字,因为你不能依赖于浏览器的决定,请查看这篇文章https://ctrl.blog/entry/html5-input-number-localization
喜欢
<input type="number" pattern="[0-9]+([,\.][0-9]+)?"
允许使用逗号和点