2012-04-21 10 views
7

Estoy tratando de anular las plantillas SymfonyGeneratorBundle mediante la creación deSymfony2: ¿cómo sobrescribir la plantilla central?

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

Ese archivo debe sustituir:

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

Pero sigue utilizando archivo original incluso después de cache:clear. Cómo hacer que w/o crear nuevo paquete como Can't override the standard skeleton views in Symfony2 GeneratorBundle?

+0

¿no debería ser una extensión "index.html.twig.twig" en su lugar? Tenga en cuenta la doble "ramita". http://symfony.com/doc/current/bundles/SensioGeneratorBundle/index.html – DevWL

Respuesta

14

Registre su paquete justo después de SensioGeneratorBundle en app/AppKernel.php ej .:

// 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(); 

Luego, en YourBundle.php método de reemplazo registerCommands,

// 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); 
} 

tienes que copiar skeleton carpeta para YourBundle\Resource y modificar plantillas.

+0

Lo hice exactamente y recibo este mensaje de error: [Twig_Error_Loader] El "C: \ wamp \ apps \ rerent \ src \ Rent \ El directorio ProgramBundle /../ Resources/skeleton/crud "no existe. Supongo que intenta leer del paquete en lugar de la aplicación/carpeta. ¿Ayuda? – Zeljko

+0

Olvidé decirle una advertencia de este enfoque, debe copiar la carpeta del esqueleto en su ProgramBundle. Además, '../' no es obligatorio. Código editado –

+0

¿Funcionó? –

0

La respuesta de m2mdas trabajó para mí, pero sólo después de descubrir que debería leer

del sistema de archivos en lugar de sistema de archivos!

Eche un vistazo a la carpeta vendors/symfony /.../ Filesystem para verificar esto.

11

Para sustituir la plantilla de edición, por ejemplo, en la versión 2.3 o superior, copiar el archivo:

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

para el directorio:

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

Ahora, sólo generan porquería con el comando por defecto y usará la nueva plantilla.

Cuestiones relacionadas