Я пытаюсь переопределить шаблоны SymfonyGeneratorBundle, создав
\app\Resources\SensioGeneratorBundle\skeleton\crud\views\index.html.twig
Этот файл должен заменить:
\vendor\bundles\Sensio\Bundle\GeneratorBundle\Resources\skeleton\crud\views\index.html.twig
Но он по-прежнему использует оригинальный файл даже после cache:clear.
Как это сделать без создания нового пакета, например Невозможно переопределить стандартные представления скелета в Symfony2 GeneratorBundle ?
Зарегистрируйте свой пакет сразу после SensioGeneratorBundle
в app/AppKernel.php
например:
// 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();
Затем в YourBundle.php
registerCommands
метода YourBundle.php
,
// 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); }
Вам нужно скопировать папку skeleton
в YourBundle\Resource
и изменить шаблоны.
Чтобы переопределить шаблон редактирования, например, в версии 2.3+, скопируйте файл:
vendor/sensio/generator-bundle/Sensio/Bundle/GeneratorBundle/Resources/skeleton/crud/views/edit.html.twig.twig
для каталога:
app/Resources/SensioGeneratorBundle/skeleton/crud/views/edit.html.twig.twig
Теперь просто создайте crud с помощью команды по умолчанию, и он будет использовать новый шаблон.
Ответ m2mdas работал для меня, но только после обнаружения того, что он должен читать
Файловая система вместо FileSystem!
Взгляните на папку поставщиков / symfony /…/ Filesystem, чтобы проверить это.