2012-04-21 17 views
7

Sto cercando di ignorare i modelli SymfonyGeneratorBundle creandoSymfony2: come sovrascrivere il modello principale?

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

Tale file dovrebbe sostituire:

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

ma utilizza ancora file originale anche dopo cache:clear. Come farlo w/o la creazione di nuovo bundle come Can't override the standard skeleton views in Symfony2 GeneratorBundle?

+0

non dovrebbe essere un'estensione "index.html.twig.twig"? Notare il doppio "ramoscello". http://symfony.com/doc/current/bundles/SensioGeneratorBundle/index.html – DevWL

risposta

14

Pubblica il tuo pacco subito dopo SensioGeneratorBundle in app/AppKernel.php es .:

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

Poi nel YourBundle.php esclusione registerCommands metodo,

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

dovete copiare la cartella skeleton-YourBundle\Resource e modificare i modelli.

+0

Ho fatto esattamente e visualizzato questo messaggio di errore: [Twig_Error_Loader] "C: \ wamp \ apps \ rerent \ src \ Rent \ La directory ProgramBundle /../ Resources/skeleton/crud "non esiste. Immagino che provi a leggere dal pacchetto invece da app/cartella. Aiuto? – Zeljko

+0

Hai dimenticato di dirti un avvertimento su questo approccio, devi copiare la cartella skeleton sul tuo ProgramBundle. Anche '../' non è richiesto. Codice modificato –

+0

Ha funzionato? –

0

La risposta di m2mdas lavorato per me, ma solo dopo aver scoperto che si deve leggere

Filesystem invece di FileSystem!

Dai un'occhiata ai tuoi fornitori/symfony /.../ Cartella del filesystem per verificarlo.

11

per ignorare il modello di modifica, ad esempio, nella versione 2.3 e versioni successive, copiare il file:

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

per la directory:

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

Ora, solo generare CRUD con il comando predefinito e userà il nuovo modello.

Problemi correlati