Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony';s NumberType作为HTML5输入字段和自定义区域设置_Php_Html_Forms_Symfony_Locale - Fatal编程技术网

Php Symfony';s NumberType作为HTML5输入字段和自定义区域设置

Php Symfony';s NumberType作为HTML5输入字段和自定义区域设置,php,html,forms,symfony,locale,Php,Html,Forms,Symfony,Locale,我的应用程序更喜欢deaslocale来显示数字,比如1.234.567,89而不是1234567.89(或者1234567,89而不是1234567.89) 因此,我更改了config.yml中的本地参数: parameters: locale: de 此外,我使用NumberType生成我的表单字段: class MyFormType extends AbstractType { public function buildForm(FormBuilderInterface

我的应用程序更喜欢
de
aslocale来显示数字,比如1.234.567,89而不是1234567.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
一切正常

在我看来,html5输入字段需要填写英文格式的数字。但是,我如何才能将数字输出为非德语

总结 使用locale
de
时,该字段不起作用。该值不会显示在生成的输入字段中,尽管“值”属性正确填写了德语格式的数字:

使用locale
en
字段工作:

有趣的事实:我的浏览器(Firefox 45.9.0和Google Chrome v54.0.2840.71,debian/64位)检测到我计算机的区域设置de,并将数字显示为德语格式的数字,即使我将应用程序的区域设置存储到
en
(onInput字段类型
number

添加lang属性
没有帮助


非常感谢

您可以尝试设置html lang属性

<html lang="de">

但是我认为您应该使用pattern属性而不是number,因为您不能依赖浏览器的决定,请参阅本文

类似


您可以尝试设置html lang属性

<html lang="de">

但是我认为您应该使用pattern属性而不是number,因为您不能依赖浏览器的决定,请参阅本文

类似


修复了该问题。。。不要将symfony的
NumberType
用于HTML5类型为
number
的输入元素

而是使用通用的
TextType
表单类型

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('myNumber', TextType::class, [...]);
}
并通过模板添加属性
type=“number”
。例如,对于细枝引擎,您可以使用以下代码:

{{ form_widget(form.myNumber, {'type':'number', 'lang': app.request.locale}) }}

解决了这个问题。。。不要将symfony的
NumberType
用于HTML5类型为
number
的输入元素

而是使用通用的
TextType
表单类型

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('myNumber', TextType::class, [...]);
}
并通过模板添加属性
type=“number”
。例如,对于细枝引擎,您可以使用以下代码:

{{ form_widget(form.myNumber, {'type':'number', 'lang': app.request.locale}) }}

我不知道这是否是推荐的方法,但它确实起了作用;)我不知道这是否是推荐的方法,但它确实起了作用;)Thks