Jul*_*cro 6 code-generation symfony
我没有设法覆盖generatorBundle的骨架视图.
我首先尝试在/app/Resources/SensioGeneratorBundle/skeleton/crud/views/index.html.twig中添加我的视图
它没有用,所以我尝试创建一个新的Bundle扩展SensioGeneratorBundle并将我的视图复制到其Resources文件夹中.
我已经设法使用主题用于twig表单,但我需要个性化doctrine:generate:crud命令生成的视图.
首先:相应的骨架视图位于:
vendor/bundles/Sensio/Bundle/GeneratorBundle/Resources/skeleton/crud
Run Code Online (Sandbox Code Playgroud)
你可以通过覆盖这些视图文件来快速而肮脏 - 但这不是我们想要的;)
在:
vendor/bundles/Sensio/Bundle/GeneratorBundle/Command/GenerateDoctrineCrudCommand.php
Run Code Online (Sandbox Code Playgroud)
有一个发电机的存取器:
protected function getGenerator()
{
if (null === $this->generator) {
$this->generator = new DoctrineCrudGenerator($this->getContainer()->get('filesystem'), __DIR__.'/../Resources/skeleton/crud');
}
return $this->generator;
}
Run Code Online (Sandbox Code Playgroud)
可以尝试在扩展的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();
}
}
Run Code Online (Sandbox Code Playgroud)
将vendor/bundles/Sensio/Bundle/GeneratorBundle/Resources/skeleton/crud复制到您的资源(在我的示例中为"src/Acme/CrudGeneratorBundle/Resources/crud")
| 归档时间: |
|
| 查看次数: |
2771 次 |
| 最近记录: |