Php Symfony 3.2表单在textfield上添加筛选器以删除不需要的字符的最佳方法
我正在使用Symfony 3.2。我在Symfony表单上有一个文本字段。我想在提交表单时应用“清理”功能。最好的方法是什么?下面是表单的一个片段。所涉及的文件是“评论”。我想从中删除不需要的字符。我真的不想在控制器中做任何事情Php Symfony 3.2表单在textfield上添加筛选器以删除不需要的字符的最佳方法,php,symfony,symfony-forms,symfony-3.2,Php,Symfony,Symfony Forms,Symfony 3.2,我正在使用Symfony 3.2。我在Symfony表单上有一个文本字段。我想在提交表单时应用“清理”功能。最好的方法是什么?下面是表单的一个片段。所涉及的文件是“评论”。我想从中删除不需要的字符。我真的不想在控制器中做任何事情 $form = $this->createFormBuilder( array('items' => $orderItems)) ->add('items', CollectionType::class,
$form = $this->createFormBuilder(
array('items' => $orderItems))
->add('items', CollectionType::class,
array(
'entry_type' => ReturnItemType::class,
'entry_options' => array('label'=>false),
'allow_add' => true
)
)
->add('comment', TextareaType::class,
array(
'error_bubbling' => true,
'constraints' => array(
new NotBlank()
)
));
您可以为此使用symfony表单事件。例如预提交事件。在您的表格中添加
->addEventListener(
FormEvents::PRE_SUBMIT,
[$this, 'onPreSubmit']
)
及
您可以为此使用symfony表单事件。例如预提交事件。在您的表格中添加
->addEventListener(
FormEvents::PRE_SUBMIT,
[$this, 'onPreSubmit']
)
及
因此,在查看了一些选项之后,我在表单本身上添加了一个数据转换
$builder->add('comment', TextType::class,
array(
'label' => 'Add a comment',
'required' => false,
)
)->get('comment')->addModelTransformer(return new CallbackTransformer (
function ($originalText)
{
return preg_replace( 'REMOVETHISTEXT', '', $originalText);
},
function ($submittedComment)
{
return preg_replace( 'REMOVETHISTEXT', '', $submittedComment);
}
));
这确实是我读过并尝试过的最好的方法。因此,在查看了一些选项后,我在表单本身上添加了数据转换
$builder->add('comment', TextType::class,
array(
'label' => 'Add a comment',
'required' => false,
)
)->get('comment')->addModelTransformer(return new CallbackTransformer (
function ($originalText)
{
return preg_replace( 'REMOVETHISTEXT', '', $originalText);
},
function ($submittedComment)
{
return preg_replace( 'REMOVETHISTEXT', '', $submittedComment);
}
));
根据我所阅读和尝试的内容,这确实是最好的方法。只需使用datatransformer。只需使用datatransformer。了解如何在Symfony中为表单事件添加侦听器是一件好事。但是我认为添加一个转换器是解决我的问题的更好方法。知道如何在Symfony中为表单事件添加侦听器是一件好事。但我认为添加变压器是解决我的问题的更好方法