ฉันกำลังพยายามตรวจสอบเงื่อนไขก่อนการโหลดหน้าเว็บ หากมีค่าให้โหลดหน้าเว็บ หากไม่ต้องเปลี่ยนเส้นทาง
ฉันกำลังติดตามสิ่งนี้ หน้าหนังสือ
ฉันได้สร้างไฟล์ /mymodule/mymodule.services.yml และไฟล์ /mymodule/src/MyModuleSubscriber.php
ใน MyModuleSubscriber.php ฉันต้องการตรวจสอบว่ามีค่าอยู่หรือไม่ หากมีค่าให้โหลดไซต์ตามปกติ หากไม่มีค่าให้ดำเนินการเปลี่ยนเส้นทาง
นี่คือรหัส แต่ไม่แน่ใจว่าจะเขียนอย่างไรให้ถูกต้อง ฉันต้องใส่คำสั่งอื่นหรือเว้นว่างไว้
นี่เป็นวิธีที่ถูกต้องในการตรวจสอบค่าที่มีอยู่ในทุกการโหลดหน้าเว็บหรือไม่
คลาส MyModuleSubscriber ใช้ EventSubscriberInterface {
ฟังก์ชั่นสาธารณะ checkForRedirect (GetResponseEvent $ เหตุการณ์) {
$baseUrl = $event->getRequest()->getBaseUrl();
if($value == null &&
$baseURL !== '/MyModulePage') {
$event->setResponse(redirectResponse ใหม่($baseUrl.'/MyModulePage'));
}
}
/**
* {@inheritdoc}
*/
ฟังก์ชันคงที่ getSubscribedEvents () {
$events[KernelEvents::REQUEST][] = array('MyModuleLoad', 200);
ส่งคืนเหตุการณ์ $;
}
}
แก้ไข:
$path = \Drupal::service('path.current')->getPath();
if($path !== '/MyModulePage') {
$event->setResponse(new RedirectResponse('/MyModulePage'));
}