【问题标题】:An error is thrown in PROD mode but NOT in DEV mode: "Notice: Undefined index" in $form->getConfig()->getAttributes()在 PROD 模式下会引发错误,但在 DEV 模式下不会: $form->getConfig()->getAttributes() 中的“注意:未定义索引”
【发布时间】:2017-04-05 16:42:35
【问题描述】:

在 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:start [我的服务器的IP]:[自定义端口]

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

会不会是$form->getConfig()->getAttributes()prod环境下没有索引?

有什么方法可以调试在prod 环境中发生但在dev 环境中不发生的此类错误?

【问题讨论】:

  • 崩溃的那一行看起来甚至不像是实现代码的正确方法。你想做什么?您是否有正在遵循的参考教程或代码?如果是这样,您可以发布链接吗?我在 Symfony 上看过你的一些帖子,你似乎遵循更旧的标准,而不是 the latest documentation
  • @Alvin Bunk,感谢您的意见,我尽可能地遵循 SYMFONY 文档。在本文档上所做的工作很棒。也许我在那里和那里使用旧标准,因为我在 SO 或其他任何地方找到了我的问题的解决方案。我不会详细介绍我的最终目标,我也明白知道这可以帮助你引导我走向可能与我相关的其他方向。但是我的代码太高级了,它在 DEV 模式下工作得很好,我现在只想让它在 PROD 中工作。那时我不能冒险重新设计它。

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


【解决方案1】:

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

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'];
             ....   
      }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2012-05-19
    相关资源
    最近更新 更多