Symfony使用Form Event在提交之前更改数据 - php

我已准备好表单事件FormEvents::PRE_SUBMIT

namespace AppBundle\Form\EventListener;

use Doctrine\ORM\EntityManager;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Core\Authorization\AuthorizationChecker;


class AddProfileFieldSubscriber implements EventSubscriberInterface
{
    protected $authorizationChecker;

    protected $em;

    function __construct(AuthorizationChecker $authorizationChecker, EntityManager $em)
    {
        $this->authorizationChecker = $authorizationChecker;
        $this->em = $em;
    }

    public static function getSubscribedEvents()
    {
        // Tells the dispatcher that you want to listen on the form.pre_set_data
        // event and that the preSetData method should be called.
        return array(
            FormEvents::PRE_SUBMIT => 'onPreSubmit'
        );
    }


    /**
     * @param FormEvent $event
     */
    public function onPreSubmit(FormEvent $event){

        $interestTags = $event->getData();
        $interestTags = $interestTags['interest'];
        foreach($interestTags as $key => $interestTag){
                $interestTags[$key] = "55";
            }
        }
}

在函数onPreSubmit中,如果我转储$event,则可以看到以下信息。

Symfony使用Form Event在提交之前更改数据 - php

我要做的就是更改valuekey,在该位置您会看到红色箭头指向的位置,以便在其余过程中继续使用新的value而不是旧的qqq

我使用的方法似乎可以正确更改值,但是一旦我退出foreach循环,仍然保留旧值,我该怎么做,以便在其余过程中将444替换为例如 ?

参考方案

onPreSubmit函数中,您需要使用修改后的数组设置事件数据:

public function onPreSubmit(FormEvent $event){

        $interestTags = $event->getData();
        $interestTags = $interestTags['interest'];
        foreach($interestTags as $key => $interestTag){
                $interestTags[$key] = "55";
            }
        }
        $event->setData($interestTags);
}

Symfony 2在用户站点上动态添加字段以形成表单 - php

我正在研究调查包。目的是为用户提供一个功能全面的调查系统。我已经准备好一个后端,使您可以创建调查,添加问题(打开文本,单选按钮,复选框),是否需要提问,激活调查,生成令牌以及通过电子邮件将令牌发送到调查的链接。当然,我也有显示调查并保存答案的前端。现在,我想添加另一种可能性。带有答案(单选或复选框)和评论的问题。例如:你有一只狗吗?是没有如果用户选择是,则附…

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

php Singleton类实例将在多个会话中保留吗? - php

举一个简单的例子,如果我想计算一个不使用磁盘存储的脚本的命中次数,我可以使用静态类成员来执行此操作吗?用户1:<?php $test = Example::singleton(); $test->visits++; ?> 用户2:<?php $test = Example::singleton(); $test->visits+…

PHP:将字符串拆分为字母和数字部分的最佳方法 - php

我有几个格式的字符串AA11 AAAAAA1111111 AA1111111 分离字符串的字母和数字部分的最佳方法(最有效)? 参考方案 如果它们都是一系列字母,然后是一系列数字,并且没有非字母数字字符,那么sscanf()可能比regexp更有效$example = 'AAA11111'; list($alpha,$numeric) =…

Symfony 2:如何通过路由名称获取默认路由? - php

是否可以通过名称检索有关某条路线的信息,或获取所有路线的列表?我需要能够获取任意路径的_controller中的defaults值,而不仅仅是当前路径。这有可能吗?P.S .:我发现我可以找到使用YAML的路由,但是重新解析似乎是不必要且繁重的。 参考方案 我真的很擅长回答自己的问题。要获取路由,请在路由器上(控制器内的getRouteCollection(…