Symfony4 MakerBundle拥有Crud Maker

时间:2018-05-10 12:40:13

标签: crud symfony4 boilerplate

我想自定义新的makerbundle crud maker的样板代码。没有简单的覆盖模板,就像在SensioGeneratorBundle中一样。我尝试基于原始代码生成自定义MyMakeCrud - 但我对注入的DoctrineEntityHelper $ entityHelper感到困惑。

 Cannot autowire service "App\Maker\MakeMyCrud": argument "$entityHelper" of
 method "__construct()" references class "Symfony\Bundle\MakerBundle\Doctri
 ne\DoctrineEntityHelper" but no such service exists. You should maybe alias
 this class to the existing "maker.doctrine_entity_helper" service.

现有的maker.doctrine_entity_helper在制造商捆绑包中定义为私有。我怎样才能让注射剂运转?

你可以帮帮我吗?有没有人定制crud一代的例子?新的sf4。

2 个答案:

答案 0 :(得分:0)

您必须为其定义服务,如下所示:

    app.maker.make_crud:
    class: App\Maker\MakeCrud
    arguments: ['@maker.doctrine_helper']
    calls:
        - [configureCommand, ['@security.command.user_password_encoder', '@?']]
        - [interact, ['@?', '@?', '@security.command.user_password_encoder']]
    tags:
        - { name: maker.command }

我把它放在config/services.yaml

App\Maker\MakeCrud是你的制造商类。

应该将它放在services_dev.yaml文件中。

希望这有帮助。

答案 1 :(得分:0)

非常感谢你们俩的这篇文章。我也必须自定义MakeCrud命令。 这是适用于我的版本5的配置。

app.maker.make_crud:
    class: App\Maker\MakeCrudCommand
    arguments: ['@maker.doctrine_helper', '@maker.renderer.form_type_renderer']
    calls:
        - [configureCommand, ['@security.command.user_password_encoder', '@?']]
        - [interact, ['@?', '@?', '@security.command.user_password_encoder']]
    tags:
        - { name: maker.command }