Score:0

การกระทำที่กำหนดเองของ VBO - รีเซ็ตหลังจากดำเนินการ

ธง gg

ฉันได้สร้างปุ่มการดำเนินการแบบกำหนดเองของ VBO สองปุ่มแล้ว คนหนึ่งพิมพ์คำสั่ง อีกคนอัปเดต การคลิกหนึ่งครั้งจะเป็นการปิดใช้งานและการคลิกอีกครั้งจนกว่าหน้าจะโหลดซ้ำ (สูญเสียคำสั่งที่ตรวจสอบทั้งหมด)

ฉันจะให้ปุ่มพิมพ์สร้างใหม่/รีเฟรช/โหลดหน้าใหม่ หรือทำให้ปุ่มใช้งานได้อีกครั้งและรักษารายการที่เลือกไว้ได้อย่างไร ถ้าเป็นไปได้

นี่คือรหัสเฉพาะสำหรับสองปุ่ม:

คลาส PrintOrderAction ขยาย ViewsBulkOperationsActionBase ใช้ ContainerFactoryPluginInterface {

  ...

  ดำเนินการฟังก์ชั่นสาธารณะ (สั่งซื้อ $ สั่งซื้อ = NULL) {
    $this->executeMultiple([$คำสั่ง]);
    ส่งคืน $this->t('พิมพ์ใบแจ้งหนี้การสั่งซื้อ');
  }

  ฟังก์ชั่นสาธารณะ executeMultiple (อาร์เรย์ $ คำสั่ง) {
    พยายาม {
      (StreamedResponse(function() ใหม่ใช้ ($orders){
        $this->printBuilder->deliverPrintable($orders, $this->entityPrintPluginManager->createSelectedInstance('pdf'), TRUE);
      }))->ส่ง();
    }
    จับ (PrintEngineException $e){
      $this->messenger()->addError(new FormattableMarkup(Xss::filter($e->getMessage()), []));
    }
  }

}

...

คลาส FulfillOrderAction ขยาย ViewsBulkOperationsActionBase {

...

ดำเนินการฟังก์ชั่นสาธารณะ (สั่งซื้อ $ สั่งซื้อ = NULL) {
    ถ้า(!$state = $order->getState()){
      ส่งคืน $this->t('Order #:number can\'t change state',[
        ':number' => $order->getOrderNumber(),
      ]);
    }

    $order_state_transitions = $state->getTransitions();
    if(!is_null($order_state_transitions['validate'])) {
      $state->applyTransition($order_state_transitions['ตรวจสอบความถูกต้อง']);
      $order->save();
    }

    ส่งคืน $this->t('Order #:number สำเร็จแล้ว', [
      ':number' => $order->getOrderNumber(),
    ]);
  }

}

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

Drupal ระงับแบบฟอร์มในทางใดทางหนึ่งที่จะห้ามการส่งต่อไป หรือบางทีในความพยายามที่จะกำจัดการส่งซ้ำซ้อนหรือไม่ ถ้าเป็นเช่นนั้น มีวิธีปิดการใช้งานสำหรับแบบฟอร์มนี้หรือไม่?

มันสมเหตุสมผลไหม ลำบากจริงๆกับเรื่องนี้

Jaypan avatar
de flag
ฉันไม่มีคำตอบสำหรับคำถามของคุณ แต่ลองคิดดูใหม่ ฉันน่าจะสร้างการกระทำที่สามที่เรียกสองอย่างแรก
Delford Chaffin avatar
gg flag
@Jaypan - เป็นไปได้ที่น่าสนใจ ฉันไม่ได้จินตนาการว่าพวกเขาจำเป็นต้องใช้ตัวเลือกเดิมที่เลือกไว้ตลอดเวลาและพยายามทำให้มันยืดหยุ่น แต่ถ้าดูเหมือนว่าจะเป็นวิธีที่ใช้ในโลกแห่งความเป็นจริงต่อไป อาจเป็นความคิดที่ดี ขอบคุณ!

โพสต์คำตอบ

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