在Symfony2中向FormEvent侦听器添加参数

Sam*_*ron 1 forms events event-listener symfony

我正在尝试将一些额外的参数传递给我的FormEvent Listener,它通常只需要一个参数,实际的事件本身.我尝试过这样的事情:

$builder->addEventListener(FormEvents::PRE_SET_DATA,
    function($event, $extraData) {
        //Do stuff
    }
);
Run Code Online (Sandbox Code Playgroud)

但是,这会返回一个错误,指出它缺少此函数的第二个参数.我愿意接受任何建议!谢谢!

qoo*_*mao 7

事件侦听器闭包只传递了事件,因此您$extraData永远不会通过侦听器传递给它.

如果你想在闭包内的表单中的其他地方使用数据,那么你需要使用use类似的方式在闭包中传递它.

$extraData = array('some' => 'stuff');

$builder->addEventListener(FormEvents::PRE_SET_DATA,
    function($event) use ($extraData) {
        //Do stuff
    }
);
Run Code Online (Sandbox Code Playgroud)

编辑

对不起,我昨晚复制并粘贴你的封面,其中包括function($event, $extraData),然后我忘了将其删除.该use声明是所有需要的.这个$extraData参数不会被事件设置,因此(可能)会出现为null,甚至可能会覆盖通过该传递的传入的参数use.

这个答案(释义)中的信息开始," $extraData当函数被定义时绑定并且在调用函数时绑定参数"会让我相信可能会发生覆盖.