php – Symfony2 – 更改捆绑名称后的Twig异常
我在Symfony 2.6.13中遇到了问题.
我创建了一个自定义类型GeneralBundle / Form / Type / DateRangeType.php: <?php namespace IronstatGeneralBundleFormType; use SymfonyComponentFormAbstractType; use SymfonyComponentFormFormBuilderInterface; use SymfonyComponentOptionsResolverOptionsResolverInterface; class DateRangeType extends AbstractType { const NAME = 'date_range'; private $manager; public function __construct($manager) { $this->manager = $manager; } public function buildForm(FormBuilderInterface $builder,array $options) { $builder ->add('dateFrom','date',array( 'widget' => 'single_text','format' => 'dd/MM/yyyy','attr' => array('class' => 'datepicker input-small'),'label_attr' => array('class' => 'control-label label-sm'),'label' => 'Fecha desde','empty_value' => false,)) ->add('dateTo','label' => 'Fecha hasta','empty_value' => false )); $transformer = new DateRangeTransform($this->manager); $builder->addModelTransformer($transformer); } public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( 'data_class' => 'IronstatGeneralBundleEntityDateRange',)); } public function getName() { return self::NAME; } } 因此,根据文档,我还将服务创建到GeneralBundle / Resources / config / services.yml中: services: ironstat.type.date_range: class: IronstatGeneralBundleFormTypeDateRangeType arguments: ["@doctrine.orm.entity_manager"] tags: - { name: form.type,alias: date_range } 我还在config.yml中添加了这个配置: twig: form: resources: - 'IronstatGeneralBundle:Form:Type:DateRangeType' 但是,当我尝试在我的表单中添加它时,我收到此错误:
在我的表单中,我是这样添加的: $builder->add('cau','collection',$this->getDateRangeType()); 最后要知道的重要信息是它在对包的名称进行重构后停止工作(是的,我是个傻瓜,我知道……). 缺什么? 非常感谢. 更新:这是我的appKernel.php: public function registerBundles() { $bundles = array( new SymfonyBundleFrameworkBundleFrameworkBundle(),new SymfonyBundleSecurityBundleSecurityBundle(),new SymfonyBundleTwigBundleTwigBundle(),new SymfonyBundleMonologBundleMonologBundle(),new SymfonyBundleSwiftmailerBundleSwiftmailerBundle(),new SymfonyBundleAsseticBundleAsseticBundle(),new DoctrineBundleDoctrineBundleDoctrineBundle(),new SensioBundleFrameworkExtraBundleSensioFrameworkExtraBundle(),new IronstatPacienteBundleIronstatPacienteBundle(),new IronstatDiagnosticoBundleIronstatDiagnosticoBundle(),new IronstatEntidadBundleIronstatEntidadBundle(),new IronstatusuarioBundleIronstatusuarioBundle(),new IronstatGeneralBundleIronstatGeneralBundle(),new SiphocPdfBundleSiphocPdfBundle(),new FOSUserBundleFOSUserBundle(),new IronstatEnvioBundleIronstatEnvioBundle(),new IronstatArchivoBundleIronstatArchivoBundle(),new KnpBundlePaginatorBundleKnpPaginatorBundle(),new IronstatReporteBundleIronstatReporteBundle(),new KnpBundleSnappyBundleKnpSnappyBundle(),); 这是getDateRangeType函数: private function getDateRangeType() { return array( 'type' => 'date_range','allow_add' => true,'allow_delete' => true,'label_attr' => array('class' => 'control-label'),'empty_data' => null ); } 解决方法
我找到了解决方案:
问题是它缺少重命名文件(重构不是很好,大声笑). 显然,我需要重命名捆绑配置文件. 我注意到当我运行这个命令控制台时: find ./ -name "Neostat*" 和文件列表是:
更改这些文件的名称有效. 非常感谢. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |