Folosesc mereu acest mod de a injecta serviciul la controler:
<?php
spațiu de nume Drupal\TestModule\Controller;
utilizați Drupal\Core\Controller\ControllerBase;
utilizați Symfony\Component\DependencyInjection\ContainerInterface;
clasa TestModuleController extinde ControllerBase {
protejat $testModule;
funcția publică __construct(TestModule $testModule) {
$this->testModule = $testModule;
}
funcția publică statică create(ContainerInterface $container) {
returnează static nou (
$container->get('testModule.service')
);
}
funcția publică testModule() {
întoarcere [
'#type' => 'markup',
'#markup' => $this->testModule->getTestModule(),
];
}
}
Dar cu consola drupal generez controler cu serviciu (comanda drupal gcon) și obțin un alt cod:
<?php
spațiu de nume Drupal\TestModule\Controller;
utilizați Drupal\Core\Controller\ControllerBase;
utilizați Symfony\Component\DependencyInjection\ContainerInterface;
clasa TestModuleController extinde ControllerBase {
protejat $testModule;
funcția publică statică create(ContainerInterface $container) {
$instanta = parent::create($container);
$instanță->testModule = $container->get('testModule.service');
returnare $instanță;
}
funcția publică testModule() {
întoarcere [
'#type' => 'markup',
'#markup' => $this->testModule->getTestModule(),
];
}
}
Este a doua cale mai bună decât prima și care ar trebui să folosesc?