3 namespace Drupal\node\Plugin\views\argument;
5 use Drupal\node\NodeStorageInterface;
6 use Drupal\views\Plugin\views\argument\NumericArgument;
7 use Symfony\Component\DependencyInjection\ContainerInterface;
10 * Argument handler to accept a node id.
12 * @ViewsArgument("node_nid")
14 class Nid extends NumericArgument {
19 * @var \Drupal\node\NodeStorageInterface
21 protected $nodeStorage;
24 * Constructs the Nid object.
26 * @param array $configuration
27 * A configuration array containing information about the plugin instance.
28 * @param string $plugin_id
29 * The plugin_id for the plugin instance.
30 * @param mixed $plugin_definition
31 * The plugin implementation definition.
32 * @param NodeStorageInterface $node_storage
34 public function __construct(array $configuration, $plugin_id, $plugin_definition, NodeStorageInterface $node_storage) {
35 parent::__construct($configuration, $plugin_id, $plugin_definition);
36 $this->nodeStorage = $node_storage;
42 public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
47 $container->get('entity.manager')->getStorage('node')
52 * Override the behavior of title(). Get the title of the node.
54 public function titleQuery() {
57 $nodes = $this->nodeStorage->loadMultiple($this->value);
58 foreach ($nodes as $node) {
59 $titles[] = $node->label();