0

好吧,就像问题的标题一样,任何人都可以提供帮助吗?i 表示不在字符串前后的所有空格。我只是看到修剪选项为真,这不是我想要的。

4

1 回答 1

3

Symfony 在内部使用 EventListener 处理这个问题。我应该想象你可以为自己的目的窃取这种技术。

namespace Your\Bundle\Form\Extension\Core\EventListener;

use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\Event\FilterDataEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class StripWhitespaceListener implements EventSubscriberInterface
{
  public function onBindClientData( FilterDataEvent $event )
  {
    $data = $event->getData();

    if ( is_string( $data ) )
    {
      $event->setData( preg_replace( "/\s/", "", $data ) );
    }
  }

  static public function getSubscribedEvents()
  {
    return array( FormEvents::BIND_CLIENT_DATA => 'onBindClientData' );
  }
}

然后,在您的表单类型中buildForm()

public function buildForm( FormBuilder $builder, array $options )
{
  $builder
    ->add( 'foo', 'text', array( 'label' => 'Foo' ) )
  ;

  $builder->get( 'foo' )->addEventSubscriber( new StripWhitespaceListener() );
}
于 2012-05-16T15:54:41.770 回答