在PROD模式下抛出错误但不在DEV模式下抛出错误:"注意:未定义的索引" in $ form-> getConfig() - > getAttributes()

时间:2017-04-05 16:42:36

标签: php symfony symfony-forms production-environment symfony-3.2

在Ubuntu服务器上的prod环境中运行我的symfony3项目我收到以下错误:

  

"注意:未定义索引:data_collector / passed_options",

如果我使用dev环境,则不会发生此错误。

我的自定义FormType

中引发了错误
// src/MyBundle/Form/CustomType/MyCustomType.php:
class MyCustomType extends AbstractType {
      public function buildForm(FormBuilderInterface $builder, array $options){
           $builder->addEventListener(FormEvents::POST_SET_DATA, function(FormEvent $event){....}
            $form = $event->getForm();
            $inheritedAttr = $form->getConfig()->getAttributes()['data_collector/passed_options']['attr']; //it crashes there
             ....   
      }

}

我在生产Ubuntu服务器(Like it is explained here)上编辑了我的app_dev.php文件,以便我可以使用此命令在生产中进行测试:

php bin / console server:启动[我的服务器的IP]:[自定义端口]

但错误仍然没有在dev环境中抛出。所以我的开发机器不是问题。

可能是$form->getConfig()->getAttributes()prod环境中没有索引吗?

我是否可以通过某种方式调试prod环境中发生但不在dev环境中的错误?

1 个答案:

答案 0 :(得分:0)

addEventListener中,作为$options函数中的参数传递的buildForm应该传递,因为它包含属性:

class MyCustomType extends AbstractType {
      public function buildForm(FormBuilderInterface $builder, array $options){
           $builder->addEventListener(FormEvents::POST_SET_DATA, function(FormEvent $event) use ($options) {....}
            $form = $event->getForm();
            $inheritedAttr = $options['attr'];
             ....   
      }

}