ฉันมีปัญหาที่คล้ายกันมากและไม่เพียง แต่หาวิธีแก้ปัญหา แต่ยังได้เรียนรู้สิ่งใหม่เกี่ยวกับวิธีการทำงานของมุมมอง ให้ฉันแบ่งปันสิ่งที่ฉันเรียนรู้และวิธีแก้ปัญหาของคุณด้วย
เมื่อคุณสร้างมุมมองที่มีตัวกรองเชิงบริบทตั้งแต่หนึ่งตัวขึ้นไปมุมมองจะต้องได้รับค่าของตัวกรองเหล่านั้นจากที่อื่น สามารถทำได้โดย -
- การเลือกค่าตัวกรองบริบทจาก URL
- โดยทั่วไปแล้วคุณจะมีการดูหน้าเว็บเพื่อวัตถุประสงค์ดังกล่าวที่มี URL ของฟอร์ม
foo/%/bar
หรือfoo/bar/%
สำหรับตัวกรองเชิงบริบทเดียวหรือของฟอร์มfoo/%/bar/%
หรือfoo/bar/%/%
สำหรับตัวกรองหลายตัว
- ในกรณีที่คุณมีตัวกรองหลายตัวค่า url ที่ปรากฏขึ้นก่อนจะถูกแมปกับตัวกรองตัวแรกถัดจากตัวกรองตัวที่สองเป็นต้น
- ชมช่วยให้คุณสามารถที่จะบอกว่าจะทำอย่างไรถ้าค่าตัวกรองจะไม่สามารถใช้ได้ใน URL นี้มักจะใช้สำหรับมุมมองบล็อก
- คุณสามารถเลือกจากการกระทำต่าง ๆ แล้วกำหนดค่าตัวเลือกได้เช่นกัน
asdfj kajsdf
- อีกมุมมองหนึ่งช่วยให้คุณสามารถบอกได้ว่าจะทำอย่างไรกับค่าตัวกรองหากพบใน URLตามที่อธิบายไว้ใน # 1 ด้านบน กรณีการใช้งานทั่วไปคือ - สร้างชื่อแบบไดนามิกโดยยึดตามค่าตัวกรอง, การตรวจสอบค่าตัวกรอง ฯลฯ
- เมื่อตรวจสอบค่าตัวกรองคุณสามารถเปลี่ยนค่าได้เช่นกัน! (นั่นคือที่แก้ปัญหาของเราอยู่ btw) นี่คล้ายกับวิธีที่เราสามารถเปลี่ยนค่า $ form ในการตรวจสอบความถูกต้องของแบบฟอร์ม drupal
วิธีแก้ไขปัญหาเฉพาะของคุณนั้นคือการใช้รหัสที่คล้ายกันมากในส่วนที่ชี้โดยลูกศรในภาพด้านบน
ลิงค์นี้ พิสูจน์แล้วว่าเป็นความช่วยเหลือที่ดีสำหรับฉัน นี่คือข้อความที่ตัดตอนมาจากมัน:
$np = explode('/', drupal_get_normal_path($argument));
if (!empty($np[1])) {
$handler->argument = $np[1];
return TRUE;
} else {
return FALSE;
}