在Symfony2表单文本字段强制大写

时间:2015-06-16 17:34:16

标签: php forms symfony

我继承了一个Symfony2项目,该项目具有如此构建的表单:

        $builder
        ->add('Status', 'choice', array(
          'choices' => array('' => '', 'PASS' => 'PASS', 'FAIL' => 'FAIL', 'INCOMPLETE' => 'INCOMPLETE', 'DROPPED' => 'DROPPED',),
          'required' => FALSE,
        ))
        ->add('First_Name', 'text', array('label'=>'First Name',
          'required' => FALSE))
        ->add('Last_Name', 'text', array('label'=>'Last Name',
          'required' => FALSE))
        ->add('PID', 'text', array('label'=>'License Number',
          'required' => FALSE))
       ;

我需要在PID字段中输入任何字母以强制为大写。但是,我找不到选项/属性/ ...来执行此操作。

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

如果你使用bootstrap,这应该有效:

    $builder
           ->add('Status', 'choice', array( 'choices' => array('' => '',  'PASS' => 'PASS', 'FAIL' => 'FAIL', 'INCOMPLETE' => 'INCOMPLETE', 'DROPPED' => 'DROPPED',),
             'required' => FALSE,
             'attr' => array( 'class' => 'text-uppercase' ), 

    ))

答案 1 :(得分:1)

我不确定您是否要求服务器端验证或帮助客户端大写输入。如果是后者:您可以向PID元素添加CSS类或data-*属性(类似->add('PID', 'text', ['label'=>'License Number', 'required' => FALSE, 'attr' => ['data-behavior' => 'uppercase']]))。然后,您可以在表单中添加JavaScript事件处理程序(最好使用jQuery或其他一些框架),以便在模糊/更改时自动将小写字母转换为大写字母。 (我更喜欢data-*属性,因为这与CSS无关。)

要在服务器端强制执行此操作,您可以使用@Assert\Regex注释。