Score:1

ฉันสามารถใช้บริการเซสชันโดยตรงแทนการร้องขอได้หรือไม่

ธง co

เดอะ เอกสาร Drupal ในเซสชัน กล่าวถึงเซสชันที่สามารถเข้าถึงได้ผ่านวัตถุคำขอ:

เข้าถึงข้อมูลเซสชันผ่านทาง \Symfony\Component\HttpFoundation\Request::getSession() วิธีการซึ่ง ส่งคืนอินสแตนซ์ของ \Symfony\Component\HttpFoundation\Session\SessionInterface. มากที่สุด เมธอดที่สำคัญบน SessionInterface คือ set() get() และ remove()

อย่างไรก็ตาม ฉันยังได้ค้นพบว่ามี บริการเซสชั่น.

ในคลาสที่ฉันต้องใช้การพึ่งพาการฉีดและโดยค่าเริ่มต้นฉันไม่มีสิทธิ์เข้าถึงออบเจกต์คำขอ ฉันยังต้องเข้าถึงเซสชันผ่านคำขอหรือไม่ หรือฉันสามารถใช้ไดเรกไดเรกต์ได้หรือไม่ การโหลดคำขอแทน จากนั้นเข้าถึงเซสชันรู้สึกเหมือนเพิ่มค่าใช้จ่าย

ฉันได้ลองรหัสด้านล่างซึ่งดูเหมือนว่าจะทำงานได้ดี แล้วทำไมตัวอย่างส่วนใหญ่และแม้แต่เอกสารประกอบยังคงแสดงวิธีการร้องขอ ฉันขาดอะไรไปหรือมีความเสี่ยงในแนวทางนี้หรือไม่?

คลาส MyForm ขยาย FormBase {

  /**
   * เซสชั่น
   *
   * @var \Symfony\Component\HttpFoundation\Session\Session
   */
  ป้องกัน $session;

  /**
   *
   * @param \Symfony\Component\HttpFoundation\Session\Session $session
   * เซสชั่น
   */
  ฟังก์ชั่นสาธารณะ __construct ($ เซสชัน) {
    $this->session = $เซสชัน;
  }

  /**
   * {@inheritdoc}
   */
  สร้างฟังก์ชันคงที่สาธารณะ (ContainerInterface $container) {
    ส่งคืนค่าคงที่ใหม่ (
      $container->get('เซสชั่น')
    );
  }

  ฟังก์ชันฟังก์ชันบางอย่าง () {
    $this->session->get('ค่า');
    $this->session->set('value', 'somevalue');
  }

}
Score:0
ธง cn

...วิธีนี้มีความเสี่ยงหรือไม่?

หากคุณมีคำขอหลายรายการ คุณอาจได้รับวัตถุเซสชันที่ไม่ถูกต้อง Drupal ย้ายหลายสิ่งหลายอย่างออกจากออบเจกต์คำขอ เช่น การกำหนดเส้นทางและแม้กระทั่งข้อมูลเส้นทาง แต่พวกเขาไม่ได้ติดตั้งบริการเซสชันแบบสแต็กและเก็บออบเจกต์เซสชันไว้ในสแต็กคำขอแทน

หากคุณต้องการฉีดบริการนี้มีคุณสมบัติอยู่แล้ว ฟอร์มเบส ด้วยเมธอด getter และ setter

ใช้งานได้หรือไม่ (ดูความคิดเห็นที่ด้านบนของชั้นเรียน):

$session = $this->getRequest()->getSession();
Neograph734 avatar
co flag
ขอบคุณ ฉันไม่ทราบว่าแบบฟอร์มมีวิธีการเข้าถึงคำขออยู่แล้ว นั่นเป็นวิธีที่สะอาดที่สุด ฉันยังไม่เข้าใจว่าจะมีเซสชันมากขึ้นสำหรับผู้ใช้คนเดียวได้อย่างไร ฉันจะบอกว่าคำขอทั้งหมดเป็นส่วนหนึ่งของเซสชันเดียวกัน อย่างไรก็ตาม ฉันเข้าใจได้ว่าแท็บที่สองและคำขอ AJAX อาจเปลี่ยนแปลงเนื้อหาของเซสชัน
4uk4 avatar
cn flag
ตัวอย่างเช่น ในการทดสอบ คุณสามารถจำลองเซสชันหรือโมดูลอื่นสามารถเรียกใช้แบบฟอร์มของคุณในคำขอย่อยที่มีเซสชันอื่นนอกเหนือจากคำขอหลัก

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา