在symfony3

时间:2016-07-30 13:21:24

标签: php symfony

我尝试在symfony3中使用ckeditor,我成功安装了它,但是当我尝试按照教程(https://symfony.com/doc/current/bundles/IvoryCKEditorBundle/index.html)中的描述在我的表单中使用它时出错:

$builder->add('content', CKEditorType::class);

但是会产生这个错误:

  

类型错误:参数1传递给   Ivory \ CKEditorBundle \ Form \ Type \ CKEditorType :: __ construct()必须是   Ivory \ CKEditorBundle \ Model \ ConfigManagerInterface的实例,无   给定

看起来,有一个问题,因为FormType不应该在其构造函数中要求params,我错了吗?

2 个答案:

答案 0 :(得分:1)

IvoryCKEditorBundle中没有错误。如果你提供你的composer.json,命令bin/console debug:containerbin/console config IvoryCKEditorBundle的结果,它真的可以帮助我给你更准确的答案。

  

看起来,有一个问题,因为FormType不应该在其构造函数中要求params,我错了吗?

你错了,CKEditorType可能在其构造函数中要求params,并且它在当前版本中也是如此。 文件vendor/egeloen/ckeditor-bundle/Resources/config/form.xml出了问题 它应该为CKEditorBundle配置(提供)服务依赖项,但它没有。

我会尝试为此捆绑包更新composer,清除缓存和调试服务容器配置,它应该如下所示:

⇒  composer update
⇒  bin/console cache:clear
⇒  bin/console debug:container|grep ivory      
  ivory_ck_editor.config_manager                                       Ivory\CKEditorBundle\Model\ConfigManager                                                    
  ivory_ck_editor.form.type                                            Ivory\CKEditorBundle\Form\Type\CKEditorType                                                 
  ivory_ck_editor.plugin_manager                                       Ivory\CKEditorBundle\Model\PluginManager                                                    
  ivory_ck_editor.renderer                                             Ivory\CKEditorBundle\Renderer\CKEditorRenderer                                              
  ivory_ck_editor.styles_set_manager                                   Ivory\CKEditorBundle\Model\StylesSetManager                                                 
  ivory_ck_editor.template_manager                                     Ivory\CKEditorBundle\Model\TemplateManager                                                  
  ivory_ck_editor.twig_extension                                       Ivory\CKEditorBundle\Twig\CKEditorExtension  

答案 1 :(得分:1)

我有同样的错误并通过将CKEditorBundle添加到AppKernel来解决它。 CountZero's回答的评论中说明了这一点。您可以找到IvoryCKEditorBundle安装说明here

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            new Ivory\CKEditorBundle\IvoryCKEditorBundle(),
            // ...
        );

        // ...
    }
}