Не удается переопределить стандартные представления скелета в Symfony2 GeneratorBundle - PullRequest
6 голосов
/ 29 августа 2011

Мне не удается переопределить каркасные представления generatorBundle.

Сначала я попытался добавить свое представление в /app/Resources/SensioGeneratorBundle/skeleton/crud/views/index.html.twig

.

Это не сработало, поэтому я попытался создать новый Bundle, расширяющий SensioGeneratorBundle, и скопировать мое представление в его папку ресурсов.

Мне уже удается использовать темы для форм веток, но мне нужно персонализировать представления, сгенерированные командой doctrine: generate: crud.

Ответы [ 2 ]

8 голосов
/ 30 августа 2011

Прежде всего: соответствующие скелетные виды расположены здесь:

vendor/bundles/Sensio/Bundle/GeneratorBundle/Resources/skeleton/crud

Быстро и грязно, у вас все будет хорошо, переопределив эти файлы просмотра - но это не то, что мы хотим;)

В

vendor/bundles/Sensio/Bundle/GeneratorBundle/Command/GenerateDoctrineCrudCommand.php

есть генератор для Генератора:

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

    return $this->generator;
} 

Можно попытаться переопределить этот метод в своем расширяющем Bundle и установить другой $skeletonDir в конструкторе.

Edit:

Быстрый пример в моей тестовой среде, как этого можно достичь (я только сделал быстрый тест;):

Создайте новый комплект для пользовательского генератора: 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();
    }
}

Скопируйте поставщика / bundles / Sensio / Bundle / GeneratorBundle / Resources / skeleton / crud в свои ресурсы (в моем примере "src / Acme / CrudGeneratorBundle / Resources / crud")

1 голос
/ 03 января 2013

Это было лучшее решение для меня: Symfony2-хау к переопределения-ядро-шаблон

не добавляет команду, но изменяет скелет для этого конкретного комплекта.

...