当我启动此命令时
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
答案 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(