Ví dụ: bạn có thể tạo một ViewsArgumentValidator tùy chỉnh và chuyển đổi bí danh đã cho thành ID nút.
<?php
không gian tên Drupal\my_module\Plugin\views\argument_validator;
sử dụng Drupal\path_alias\AliasManagerInterface;
sử dụng Drupal\views\Plugin\views\argument_validator\ArgumentValidatorPluginBase;
sử dụng Symfony\Component\DependencyInjection\ContainerInterface;
lớp NodeAlias mở rộng ArgumentValidatorPluginBase {
$aliasManager được bảo vệ;
hàm công khai __construct(mảng $configuration, $plugin_id, $plugin_definition, AliasManagerInterface $alias_manager) {
cha mẹ::__construct($configuration, $plugin_id, $plugin_definition);
$this->aliasManager = $alias_manager;
}
tạo hàm tĩnh công khai (ContainerInterface $container, mảng $configuration, $plugin_id, $plugin_definition) {
trả về tĩnh mới (
cấu hình $,
$plugin_id,
$plugin_definition,
$container->get('path_alias.manager'),
);
}
hàm công khai validateArgument($argument) {
$argument = '/' . ltrim($argument, '/');
$path = $this->aliasManager->getPathByAlias($argument);
if (preg_match('/node\/(\d+)/', $path, $matches)) {
$this->argument->argument = $matches[1];
trả về ĐÚNG;
}
trả về SAI;
}
}
bên trong xác thực đối số chức năng chúng tôi đang kiểm tra xem có thể tìm thấy đường dẫn nội bộ cho một nút với bí danh đó hay không và chuyển đổi đối số đã cho thành ID nút tương ứng.
Thêm tệp này có tên NodeAlias.php cho bạn mô-đun tùy chỉnh trong src/Plugin/lượt xem/argument_validator thư mục và xóa bộ nhớ cache.
Sau đó, bạn có thể sử dụng Nội dung: Nid bộ lọc theo ngữ cảnh và chọn trong phần "Khi giá trị bộ lọc nằm trong URL hoặc giá trị mặc định được cung cấp" thì Trình xác thực mới ID nút theo bí danh.
