3 namespace Drupal\file\Plugin\views\argument;
5 use Drupal\Core\Entity\EntityManagerInterface;
6 use Drupal\views\Plugin\views\argument\NumericArgument;
7 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
8 use Symfony\Component\DependencyInjection\ContainerInterface;
11 * Argument handler to accept multiple file ids.
13 * @ingroup views_argument_handlers
15 * @ViewsArgument("file_fid")
17 class Fid extends NumericArgument implements ContainerFactoryPluginInterface {
20 * The entity manager service
22 * @var \Drupal\Core\Entity\EntityManagerInterface
24 protected $entityManager;
27 * Constructs a Drupal\file\Plugin\views\argument\Fid object.
29 * @param array $configuration
30 * A configuration array containing information about the plugin instance.
31 * @param string $plugin_id
32 * The plugin_id for the plugin instance.
33 * @param mixed $plugin_definition
34 * The plugin implementation definition.
35 * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
38 public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityManagerInterface $entity_manager) {
39 parent::__construct($configuration, $plugin_id, $plugin_definition);
40 $this->entityManager = $entity_manager;
46 public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
51 $container->get('entity.manager')
56 * Override the behavior of titleQuery(). Get the filenames.
58 public function titleQuery() {
59 $storage = $this->entityManager->getStorage('file');
60 $fids = $storage->getQuery()
61 ->condition('fid', $this->value, 'IN')
63 $files = $storage->loadMultiple($fids);
65 foreach ($files as $file) {
66 $titles[] = $file->getFilename();