Tôi mới sử dụng dịch vụ (và drupal 8!) Và đang cố gắng tìm ra các dịch vụ. Tôi nghĩ có lẽ tôi chỉ đang tạo ra một cách lỗi thời. Những gì tôi muốn làm là làm cho 'trình tạo xin chào' của tôi trở thành một dịch vụ và gọi nó trong một bộ điều khiển khác với các điều sau:
DBControll.php
namespace Drupal\db\Controller;
use Drupal\Core\Controller\ControllerBase;
use Drupal\db\DbServices\HelloGenerator;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\Response;
class DBController extends ControllerBase
{
private $helloGenerator;
public function __construct(HelloGenerator $x) {
$this->helloGenerator = $x;
}
public function say($count) {
$hello = $this->helloGenerator->getHello($count);
return new Response($hello);
}
public static function create(ContainerInterface $container) {
$x = $container->get('db.hello_generator');
return new static ($x);
}
}
HellGenerator.php
không gian tên Drupal \ db \ DbService;
class HelloGenerator {
public function getHello($count) {
$foo = 4 + 4 + 4;
return $foo . ' ' . $count;
}
}
db.service.yml
services:
db.hello_generator:
class: Drupal\db\DbServices\HelloGenerator
db.db_says:
path: /db/says/{count}
defaults:
_controller: '\Drupal\db\Controller\DBController::say'
requirements:
_permission: 'access content'