无法覆盖Symfony2 GeneratorBundle中的标准骨架视图

Jul*_*cro 6 code-generation symfony

我没有设法覆盖generatorBundle的骨架视图.

我首先尝试在/app/Resources/SensioGeneratorBundle/skeleton/crud/views/index.html.twig中添加我的视图

它没有用,所以我尝试创建一个新的Bundle扩展SensioGeneratorBundle并将我的视图复制到其Resources文件夹中.

我已经设法使用主题用于twig表单,但我需要个性化doctrine:generate:crud命令生成的视图.

mad*_*low 8

首先:相应的骨架视图位于:

vendor/bundles/Sensio/Bundle/GeneratorBundle/Resources/skeleton/crud
Run Code Online (Sandbox Code Playgroud)

你可以通过覆盖这些视图文件来快速而肮脏 - 但这不是我们想要的;)

在:

vendor/bundles/Sensio/Bundle/GeneratorBundle/Command/GenerateDoctrineCrudCommand.php
Run Code Online (Sandbox Code Playgroud)

有一个发电机的存取器:

protected function getGenerator()
{
    if (null === $this->generator) {
        $this->generator = new DoctrineCrudGenerator($this->getContainer()->get('filesystem'), __DIR__.'/../Resources/skeleton/crud');
    }

    return $this->generator;
} 
Run Code Online (Sandbox Code Playgroud)

可以尝试在扩展的Bundle中覆盖此方法,并$skeletonDir在构造函数中设置不同的方法.

编辑:

我的测试环境中的快速示例如何实现(我只进行了快速测试;):

为自定义生成器生成新捆绑包:php app/console generate:bundle并按照说明进行操作.不需要路线.我选择了这个例子:Acme/CrudGeneratorBundle(或者使用现有的包)

在新创建的包目录中创建名为"Command"的文件夹.

在此文件夹中放置一个命令类.

<?php
//src/Acme/CrudGeneratorBundle/Command/MyDoctrineCrudCommand.php

namespace Acme\CrudGeneratorBundle\Command;

use Sensio\Bundle\GeneratorBundle\Generator\DoctrineCrudGenerator;

class MyDoctrineCrudCommand extends \Sensio\Bundle\GeneratorBundle\Command\GenerateDoctrineCrudCommand
{
    protected function configure()
    {
        parent::configure();
        $this->setName('mydoctrine:generate:crud');
    }

    protected function getGenerator()
    {
        $generator = new DoctrineCrudGenerator($this->getContainer()->get('filesystem'), __DIR__.'/../Resources/skeleton/crud');
        $this->setGenerator($generator);
        return parent::getGenerator();
    }
}
Run Code Online (Sandbox Code Playgroud)

将vendor/bundles/Sensio/Bundle/GeneratorBundle/Resources/skeleton/crud复制到您的资源(在我的示例中为"src/Acme/CrudGeneratorBundle/Resources/crud")