5 * Contains \Drupal\Console\Generator\EntityContentGenerator.
8 namespace Drupal\Console\Generator;
10 use Drupal\Console\Core\Generator\Generator;
11 use Drupal\Console\Extension\Manager;
12 use Drupal\Console\Utils\Site;
13 use Drupal\Console\Core\Utils\TwigRenderer;
15 class EntityContentGenerator extends Generator
20 protected $extensionManager;
30 protected $twigrenderer;
35 * EntityContentGenerator constructor.
37 * @param Manager $extensionManager
39 * @param TwigRenderer $twigrenderer
41 public function __construct(
42 Manager $extensionManager,
44 TwigRenderer $twigrenderer
46 $this->extensionManager = $extensionManager;
48 $this->twigrenderer = $twigrenderer;
51 public function setIo($io)
60 * @param string $module Module name
61 * @param string $entity_name Entity machine name
62 * @param string $entity_class Entity class name
63 * @param string $label Entity label
64 * @param string $base_path Base path
65 * @param string $is_translatable Translation configuration
66 * @param string $bundle_entity_type (Config) entity type acting as bundle
67 * @param bool $revisionable Revision configuration
69 public function generate($module, $entity_name, $entity_class, $label, $base_path, $is_translatable, $bundle_entity_type = null, $revisionable = false)
73 'entity_name' => $entity_name,
74 'entity_class' => $entity_class,
76 'bundle_entity_type' => $bundle_entity_type,
77 'base_path' => $base_path,
78 'is_translatable' => $is_translatable,
79 'revisionable' => $revisionable,
83 'module/permissions-entity-content.yml.twig',
84 $this->extensionManager->getModule($module)->getPath().'/'.$module.'.permissions.yml',
90 'module/links.menu-entity-content.yml.twig',
91 $this->extensionManager->getModule($module)->getPath().'/'.$module.'.links.menu.yml',
97 'module/links.task-entity-content.yml.twig',
98 $this->extensionManager->getModule($module)->getPath().'/'.$module.'.links.task.yml',
104 'module/links.action-entity-content.yml.twig',
105 $this->extensionManager->getModule($module)->getPath().'/'.$module.'.links.action.yml',
111 'module/src/accesscontrolhandler-entity-content.php.twig',
112 $this->extensionManager->getModule($module)->getSourcePath().'/'.$entity_class.'AccessControlHandler.php',
116 if ($is_translatable) {
118 'module/src/entity-translation-handler.php.twig',
119 $this->extensionManager->getModule($module)->getSourcePath().'/'.$entity_class.'TranslationHandler.php',
125 'module/src/Entity/interface-entity-content.php.twig',
126 $this->extensionManager->getModule($module)->getEntityPath().'/'.$entity_class.'Interface.php',
131 'module/src/Entity/entity-content.php.twig',
132 $this->extensionManager->getModule($module)->getEntityPath().'/'.$entity_class.'.php',
137 'module/src/entity-content-route-provider.php.twig',
138 $this->extensionManager->getModule($module)->getSourcePath().'/'.$entity_class.'HtmlRouteProvider.php',
143 'module/src/Entity/entity-content-views-data.php.twig',
144 $this->extensionManager->getModule($module)->getEntityPath().'/'.$entity_class.'ViewsData.php',
149 'module/src/listbuilder-entity-content.php.twig',
150 $this->extensionManager->getModule($module)->getSourcePath().'/'.$entity_class.'ListBuilder.php',
155 'module/src/Entity/Form/entity-settings.php.twig',
156 $this->extensionManager->getModule($module)->getFormPath().'/'.$entity_class.'SettingsForm.php',
161 'module/src/Entity/Form/entity-content.php.twig',
162 $this->extensionManager->getModule($module)->getFormPath().'/'.$entity_class.'Form.php',
167 'module/src/Entity/Form/entity-content-delete.php.twig',
168 $this->extensionManager->getModule($module)->getFormPath().'/'.$entity_class.'DeleteForm.php',
173 'module/entity-content-page.php.twig',
174 $this->extensionManager->getModule($module)->getPath().'/'.$entity_name.'.page.inc',
179 'module/templates/entity-html.twig',
180 $this->extensionManager->getModule($module)->getTemplatePath().'/'.$entity_name.'.html.twig',
186 'module/src/Entity/Form/entity-content-revision-delete.php.twig',
187 $this->extensionManager->getModule($module)->getFormPath() .'/'.$entity_class.'RevisionDeleteForm.php',
191 'module/src/Entity/Form/entity-content-revision-revert-translation.php.twig',
192 $this->extensionManager->getModule($module)->getFormPath() .'/'.$entity_class.'RevisionRevertTranslationForm.php',
196 'module/src/Entity/Form/entity-content-revision-revert.php.twig',
197 $this->extensionManager->getModule($module)->getFormPath().'/'.$entity_class.'RevisionRevertForm.php',
201 'module/src/entity-storage.php.twig',
202 $this->extensionManager->getModule($module)->getSourcePath() .'/'.$entity_class.'Storage.php',
206 'module/src/interface-entity-storage.php.twig',
207 $this->extensionManager->getModule($module)->getSourcePath() .'/'.$entity_class.'StorageInterface.php',
211 'module/src/Controller/entity-controller.php.twig',
212 $this->extensionManager->getModule($module)->getControllerPath() .'/'.$entity_class.'Controller.php',
217 if ($bundle_entity_type) {
219 'module/templates/entity-with-bundle-content-add-list-html.twig',
220 $this->extensionManager->getModule($module)->getTemplatePath().'/'.str_replace('_', '-', $entity_name).'-content-add-list.html.twig',
224 // Check for hook_theme() in module file and warn ...
225 $module_filename = $this->extensionManager->getModule($module)->getPath().'/'.$module.'.module';
226 // Check if the module file exists.
227 if (!file_exists($module_filename)) {
229 'module/module.twig',
230 $this->extensionManager->getModule($module)->getPath().'/'.$module . '.module',
232 'machine_name' => $module,
237 $module_file_contents = file_get_contents($module_filename);
238 if (strpos($module_file_contents, 'function ' . $module . '_theme') !== false) {
241 "It looks like you have a hook_theme already declared",
242 "Please manually merge the two hook_theme() implementations in",
249 'module/src/Entity/entity-content-with-bundle.theme.php.twig',
250 $this->extensionManager->getModule($module)->getPath().'/'.$module.'.module',
255 if (strpos($module_file_contents, 'function ' . $module . '_theme_suggestions_' . $entity_name) !== false) {
258 "It looks like you have a hook_theme_suggestions_HOOK already declared",
259 "Please manually merge the two hook_theme_suggestions_HOOK() implementations in",
266 'module/src/Entity/entity-content-with-bundle.theme_hook_suggestions.php.twig',
267 $this->extensionManager->getModule($module)->getPath().'/'.$module.'.module',
273 $content = $this->twigrenderer->render(
274 'module/src/Entity/entity-content.theme.php.twig',
281 if ($this->isLearning()) {
282 $this->io->commentBlock(
284 'Add this to your hook_theme:',