Php Symfony 3.2表单在textfield上添加筛选器以删除不需要的字符的最佳方法

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,

我正在使用Symfony 3.2。我在Symfony表单上有一个文本字段。我想在提交表单时应用“清理”功能。最好的方法是什么?下面是表单的一个片段。所涉及的文件是“评论”。我想从中删除不需要的字符。我真的不想在控制器中做任何事情

$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中为表单事件添加侦听器是一件好事。但我认为添加变压器是解决我的问题的更好方法