カスタムサービス、メンバーシップサービスを構築しています。このサービスはコントローラーから呼び出すことができます。しかし、私が機能していないように見えるのは、別のサービスであるQueryFactoryを使用して、そのカスタムサービスで使用することです。
会員サービス:
namespace Drupal\hsbxl_members;
use Drupal\Core\Entity\Query\QueryFactory;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Class MembershipService.
*/
class MembershipService {
protected $hsbxl_member;
protected $entityQuery;
public function __construct(QueryFactory $entityQuery) {
$this->entity_query = $entity_query;
}
public static function create(ContainerInterface $container) {
return new static(
$container->get('entity.query')
);
}
public function MembershipsAll() {
$query = $this->entity_query->get('node');
$query->condition('status', 1);
$nids = $query->execute();
return "Hello World!";
}
}
サービスファイル:
services:
hsbxl_members.membership:
class: Drupal\hsbxl_members\MembershipService
arguments: ['@entity.query']
誰かがこれについて私を指摘できますか?私は何を間違っているのですか?
トム
必要なサービスは _entity_type.manager
_ です。
.services.yml
_services:
hsbxl_members.membership:
class: Drupal\hsbxl_members\MembershipService
arguments: ['@entity_type.manager']
_
MembershipService.php
_namespace Drupal\hsbxl_members;
use Drupal\Core\Entity\EntityTypeManagerInterface;
/**
* Class MembershipService.
*/
class MembershipService {
protected $hsbxl_member;
protected $entityTypeManager;
public function __construct(EntityTypeManagerInterface $entity_type_manager) {
$this->entityTypeManager = $entity_type_manager;
}
public function MembershipsAll() {
$query = $this->entityTypeManager->getStorage('node')->getQuery();
$query->condition('status', 1);
$nids = $query->execute();
return "Hello World!";
}
}
_
サービスは コンストラクターインジェクション を使用するため、create()
メソッドは不要です。