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