Tôi đã có một vấn đề rất giống nhau và tôi không chỉ tìm ra giải pháp cho nó, mà còn học được những điều mới về cách hoạt động của view. Hãy để tôi chia sẻ những gì tôi học được và giải pháp cho vấn đề của bạn.
Khi bạn đang tạo chế độ xem bằng một hoặc nhiều bộ lọc theo ngữ cảnh, chế độ xem phải nhận giá trị của các bộ lọc đó từ một nơi nào đó. Điều này có thể được thực hiện bởi -
- Chọn (các) giá trị bộ lọc ngữ cảnh từ URL
- Thông thường, bạn sẽ có chế độ xem trang cho các mục đích như vậy có URL của biểu mẫu
foo/%/bar
hoặc foo/bar/%
cho một bộ lọc theo ngữ cảnh HOẶC của biểu mẫu foo/%/bar/%
hoặc foo/bar/%/%
cho nhiều bộ lọc
- Trong trường hợp bạn có nhiều bộ lọc, giá trị url xuất hiện đầu tiên được ánh xạ tới bộ lọc thứ nhất, bên cạnh bộ lọc thứ hai, v.v.
- Chế độ xem cho phép bạn biết phải làm gì nếu các giá trị bộ lọc không có sẵn trong URL . Điều này thường được sử dụng cho chế độ xem khối .
- Bạn có thể chọn từ các hành động khác nhau và sau đó cấu hình lựa chọn.
asdfj kajsdf
- Một quan điểm khác cho phép bạn nói là phải làm gì với các giá trị bộ lọc nếu chúng được tìm thấy trong URL như được mô tả trong # 1 ở trên. Các trường hợp sử dụng điển hình là - Tạo tiêu đề động dựa trên giá trị bộ lọc, Xác thực giá trị bộ lọc, v.v.
- Khi xác thực các giá trị bộ lọc, bạn cũng có thể thay đổi các giá trị! (Đó là nơi giải pháp của chúng tôi nằm btw). Điều này rất giống với cách chúng ta có thể thay đổi giá trị biểu mẫu $ trong các cuộc gọi lại xác thực hình thức drupal.
Giải pháp cho vấn đề cụ thể của bạn nằm ở việc sử dụng một mã rất giống nhau trong các phần được chỉ ra bởi các mũi tên trong hình trên.
Liên kết này đã được chứng minh là giúp đỡ rất nhiều cho tôi. Đây là một đoạn trích từ nó:
$np = explode('/', drupal_get_normal_path($argument));
if (!empty($np[1])) {
$handler->argument = $np[1];
return TRUE;
} else {
return FALSE;
}