我无法覆盖generatorBundle的骨架视图。
我首先尝试在/app/Resources/SensioGeneratorBundle/skeleton/crud/views/index.html.twig中添加我的观点
它没有用,所以我尝试创建一个新的Bundle,扩展SensioGeneratorBundle并将我的视图复制到其Resources文件夹中。
我已经设法使用twig表单的主题,但我需要个性化doctrine生成的视图:generate:crud命令。
答案 0 :(得分:8)
首先:相应的骨架视图位于此处:
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
。
修改强>
我的测试环境中的快速示例如何实现(我只进行了快速测试;):
为自定义生成器生成新捆绑包: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();
}
}
将vendor / bundles / Sensio / Bundle / GeneratorBundle / Resources / skeleton / crud复制到您的资源(在我的示例中为“src / Acme / CrudGeneratorBundle / Resources / crud”)
答案 1 :(得分:1)
这对我来说是最好的解决方案: symfony2-how-to-override-core-template
不会添加命令,但会修改该特定包的骨架。