在自定义Bundle

时间:2016-04-04 12:37:10

标签: doctrine crud symfony

当我启动此命令时

php bin/console generate:doctrine:crud --entity=CustomBundle:Test

Doctrine在

中创建相对视图
symfony/app/resource/views/test

但我的CustomBundle与相对实体是在

中创建的
symfony/app/src/CustomBundle/Entity

所以,问题是:如何在

中创建这些视图
symfony/app/src/CustomBundle/views

3 个答案:

答案 0 :(得分:1)

那么,该命令没有任何选项。您可以在official documentation中查看所有可用选项。但是如果你真的需要那么你必须覆盖SensioGeneratorBundle,你可以看到如何扩展here中的任何包。然后覆盖php类vendor / sensio / generator-bundle / Generator / DoctrineCrudGenerator.php,然后找到动作 “生成”并找到这一行:

$dir = sprintf('%s/Resources/views/%s', $this->rootDir, str_replace('\\', '/', strtolower($this->entity)));

替换为:

$dir = sprintf('%s/Resources/views', $this->rootDir);

我没有尝试过,但理论上应该可行。由于您打算在那里创建所有视图,因此您可能需要覆盖每个生成的视图的名称,您可以在该类中看到下面每个视图的操作。

希望这对你有所帮助。

答案 1 :(得分:0)

symfony/app/CustomBundle/resources/views/test 

你应该在那里找到它,这取决于你使用哪个版本ps你的标签symfony 3和symfony2所以!!!

答案 2 :(得分:0)

您需要更改:

yoursymfonydir/vendor/sensio/generator-bundle/Generator/DoctrineCrudGenerator.php:

   public function generate(.....) {
   .....
   /*comment this line*/
     //$dir = sprintf('%s/Resources/views/%s', $this->rootDir, strtolower($entity));
   /*replace by*/
     //Create the views inside the bundle :
     $dir = sprintf('%s/Resources/views/%s', $this->bundle->getPath(), $entity);
   .....
   }

,在yoursymfonydir/vendor/sensio/generator-bundle/Resources/skeleton/crud/actions/edit.php.twig, index.php.twig, new.php.twig, show.php.twig中,您需要通过以下方式在每个文件中使用render()更改行:

return $this->render('{{ entity|lower|replace({'\\': '/'}) }}/edit.html.twig', array(

替换为

return $this->render('{{ bundle }}:{{ entity }}:edit.html.twig', array(