【问题标题】:how to get input type is number using form in symfony2?如何在 symfony2 中使用表单获取输入类型是数字?
【发布时间】:2012-03-08 09:30:00
【问题描述】:

这是我的表单构建器代码

public function buildForm(FormBuilder $builder, array $options)
{
    $builder->add('phoneAlternative', 'number',array('max_length'=>15));
    $builder->add('emailPersonal', 'email');
    $builder->add('addressCurrent', 'textarea');
}

这是html标记

<input id="employee_phoneAlternative" type="text" maxlength="15" required="required" name="employee[phoneAlternative]" class="valid">

任何人都建议我。为什么输入类型给出“文本”,因为我已经给出了一个数字。在构建形式时。我如何使用表单生成器在 symfony2 中将输入类型设为“数字”。

【问题讨论】:

    标签: symfony formbuilder


    【解决方案1】:

    您需要使用表单类型“integer”,而不是“number”。

    'number' 表单类型应该用于 floats,这需要 text 输入。

    因此,在您的情况下,正确的代码行是:

    $builder->add('phoneAlternative', 'integer', array('max_length'=>15));
    

    【讨论】:

    • 除此之外:numberinteger 都不能用于电话号码,因为用户习惯于填写格式化的电话号码,例如+49 (30) 123 456
    • 使用可以对电话号码使用正则表达式约束
    • 请注意,最新的 Symfony 版本要求 'integer' 写成: Symfony\Component\Form\Extension\Core\Type\IntegerType::class
    • 请注意,您的电话号码将转换为 int,因此 0123 将变为 123
    【解决方案2】:

    您可以通过覆盖表单主题模板(http://symfony.com/doc/current/book/forms.html,“表单主题”部分)来做到这一点。 在您的示例中,要创建的块是“number_widget”:

    {% block number_widget %}
    {% spaceless %}
        {% set type = type|default('number') %}
        {{ block('input') }}
    {% endspaceless %}
    {% endblock number_widget %}
    

    【讨论】:

      【解决方案3】:

      你必须这样做

      public function buildForm(FormBuilder $builder, array $options)
      {
      $builder->add('phoneAlternative', 'integer',array('max_length'=>15));
      $builder->add('emailPersonal', 'email');
      $builder->add('addressCurrent', 'textarea');
      }
      

      或者您可以使用输入在 html.twig 中创建表单

       phoneAlternative:   <input type="Number" required> 
      

      【讨论】:

        猜你喜欢
        • 2012-07-08
        • 1970-01-01
        • 1970-01-01
        • 2013-06-22
        • 1970-01-01
        • 2020-09-29
        • 1970-01-01
        • 1970-01-01
        • 2011-03-11
        相关资源
        最近更新 更多