在 PROD 模式下会抛出错误,但在 DEV 模式下不会:"Notice: Undefined index" in $form->getConfig()->getAttributes()
An error is thrown in PROD mode but NOT in DEV mode: "Notice: Undefined index" in $form->getConfig()->getAttributes()
运行 我在 Ubuntu 服务器上的 prod
环境中的 symfony3 项目我收到以下错误:
"Notice: Undefined index: 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
环境中的此类错误?
在 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'];
....
}
}
运行 我在 Ubuntu 服务器上的 prod
环境中的 symfony3 项目我收到以下错误:
"Notice: Undefined index: 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
环境中的此类错误?
在 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'];
....
}
}