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');
}
}