简体   繁体   中英

Symfony2: how to override core template?

I am trying to override SymfonyGeneratorBundle templates by creating

\app\Resources\SensioGeneratorBundle\skeleton\crud\views\index.html.twig

That file should replace:

\vendor\bundles\Sensio\Bundle\GeneratorBundle\Resources\skeleton\crud\views\index.html.twig

But it still uses original file even after cache:clear. How to do that w/o creating new bundle like Can't override the standard skeleton views in Symfony2 GeneratorBundle ?

Register your bundle right after SensioGeneratorBundle in app/AppKernel.php eg:

// app/AppKernel.php

if (in_array($this->getEnvironment(), array('dev', 'test'))) {
    //.....
    $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
    $bundles[] = new Namespace\YourBundle();
}

// Or outside if, should you want your bundle to be available in production environment
$bundles[] = new Namespace\YourBundle();

Then in YourBundle.php override registerCommands method,

// Bundle\YourBundle.php

// other declarations
use Symfony\Component\Console\Application;
use Sensio\Bundle\GeneratorBundle\Generator\DoctrineCrudGenerator;
use Symfony\Component\Filesystem\Filesystem;


public function registerCommands(Application $application){
    $crudCommand = $application->get('generate:doctrine:crud');
    $generator = new DoctrineCrudGenerator(new FileSystem, __DIR__.'/Resources/skeleton/crud');
    $crudCommand->setGenerator($generator);

    parent::registerCommands($application);
}

You have to copy skeleton folder to YourBundle\\Resource and modify templates.

To override the edit template, for example, in 2.3+ version, copy the file:

vendor/sensio/generator-bundle/Sensio/Bundle/GeneratorBundle/Resources/skeleton/crud/views/edit.html.twig.twig

for the directory:

app/Resources/SensioGeneratorBundle/skeleton/crud/views/edit.html.twig.twig

Now, just generate crud with the default command and it will use the new template.

The answer of m2mdas worked for me, but only after discovering that it should read

Filesystem instead of FileSystem!

Take a look at your vendors/symfony/.../Filesystem folder to verify this.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM