【问题标题】:How to allow only letters in a symfony2 form in twig?如何在树枝中只允许symfony2形式的字母?
【发布时间】:2016-12-05 06:10:34
【问题描述】:

我想知道如何在 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')
    ;
}

【问题讨论】:

  • 你想专门在twig中做吗?我认为你可以很容易地在 symfony 中做到这一点,如果想在 symfony 中做到这一点,请在表单中也显示你的 php/symfony 代码。
  • 好的,我已经添加了我的 php 表单代码,谢谢

标签: php forms symfony twig symfony-2.4


【解决方案1】:

您可以在 HTML 5 中使用inputpattern 属性来做到这一点。

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中:

// 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]*']
        ))
        //...
}

【讨论】:

  • 仍然在服务器端验证值,因为 html5/javascript 验证不安全
  • 好的,我已经测试了这两种解决方案,但出现警告“语言功能与项目设置中指示的 PHP 版本不兼容”,然后出现错误“无法加载类型”Symfony\Component\Form \Extension\Core\Type\TextType" ,我不得不提到我正在使用 Symfony 2.4.1
  • 我也包含了 use Symfony\Component\Form\Extension\Core\Type\TextType;在我的 php 表单代码中
  • @Roberto 我已经更新了我的答案。我从未使用过 2.4,但这似乎是正确的语法 based on the docs
猜你喜欢
  • 2015-12-10
  • 2015-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-06
  • 2012-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多