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

时间:2014-06-26 20:18:28

标签: forms symfony events event-listener

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

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

然而,这会返回一个错误,指出它缺少此函数的第二个参数。我对任何建议持开放态度!谢谢!

1 个答案:

答案 0 :(得分:6)

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

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

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

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

修改

抱歉,我昨晚复制并粘贴了您的关闭内容,其中包含function($event, $extraData),然后我忘记将其删除。 use语句就是所需要的。作为参数的$extraData将不会被事件设置,因此(可能)将显示为null,甚至可能覆盖通过use传入的那个。

来自this answer(释义)" $extraData中的信息在定义函数时绑定,并且在调用函数时绑定参数"会让我相信可能会发生覆盖。