Symfony 中的文本字段类型有一个修剪选项。我很确定该trim()
操作是由Form\Extension\Core\EventListener\TrimListener
班级进行的。它是事件的侦听器PRE_BIND
并调用:
$event->setData(trim($event->getData()));
我想提供我自己的"normalize_spaces"
选择:
$builder->add('last_name', 'text', array(
'label' => 'Last name',
'normlize_spaces' => true
));
我怎样才能提供这个选项与我的NormalizeSpacesListener
?
class NormalizeSpacesListener implements EventSubscriberInterface
{
public function preBind(FormEvent $event)
{
$data = $event->getData();
if (is_string($data)) {
$event->setData(preg_replace('/[ ]{2,}/', ' ', $data));
}
}
public static function getSubscribedEvents()
{
return array(FormEvents::PRE_BIND => 'preBind');
}
}