代码之家  ›  专栏  ›  技术社区  ›  Roberto

如何在twig中只允许symfony2形式的字母?

  •  1
  • Roberto  · 技术社区  · 8 年前

    我想知道如何在twig中配置一个文本框,只允许字母,比如字段类型只写名字。我的观点是这样的:

    <div class="control-group">
       <label class="control-label">{{form_label(form.name,'Name: ')}}</label>
       <div class="controls">
          {{form_widget(form.name,{'attr':{'placeholder':'Insert only text','min':'1'}, 'id':'1'})}}          
       </div>
    

    对不起,这是我的symfony php表单代码

    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder
                ->add('name')
                ->add('surname')
                ->add('address')
                ->add('idSex')
                //->add('birthdate', 'date',array('required'=>true))
                ->add('birthdate', 'date', [
                    'widget' => 'single_text',
                    'format' => 'yyyy-MM-dd',
                    'attr' => [
                        'class' => 'form-control input-inline datepicker',
                        'data-provide' => 'datepicker',
                        'data-date-format' => 'yyyy-mm-dd'
                    ]
                ])
                ->add('observation')
                ->add('idCmf')
        ;
    }
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   rhinosforhire    8 年前

    您可以通过使用HTML 5来实现这一点 input pattern 属性

    Here's an example .

    pattern属性使用 regex ,这对这类任务非常好。一种你想要某种答案,但不关心细节的方法。

    在您的示例中:

    <div class="control-group">
        <label class="control-label">{{ form_label(form.name, 'Name: ') }}</label>
        <div class="controls">
           {{ form_widget(form.name, {'attr':{'pattern': '[a-zA-Z]*', ...} }) }}          
        </div>
    </div>
    

    或形式为:

    // formType.php
    //...
    
    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder
            ->add('name', 'text', array(
                'attr' => ['pattern' => '[a-zA-Z]*']
            ))
            // I'm assuming you'd use it for both.
            ->add('surname', 'text', array(
                'attr' => ['pattern' => '[a-zA-Z]*']
            ))
            //...
    }