Score:0

ฉันไม่เห็นการกระทำที่กำหนดเอง

ธง us

ฉันกำลังพยายามสร้างการดำเนินการแบบกำหนดเองสำหรับการดำเนินการจำนวนมากในคำสั่งซื้อขาย

ฉันใช้รหัสต่อไปนี้

mymodule/src/Plugin/Action/DeleteOrderAndApps.php

เนมสเปซ Drupal\mymodule\Plugin\Action;
    
ใช้ Drupal\commerce_order\Entity\Order;
ใช้ Drupal\Core\Action\ActionBase;
ใช้ Drupal\Core\Session\AccountInterface;
ใช้ Drupal\node\Entity\Node;
    
/**
 * ลบคำสั่งและการกระทำของแอพที่แนบมา
 *
 * @หนังบู๊(
 * id = "delete_order_and_apps",
 * label = @Translation("ลบคำสั่งซื้อและแอพ"),
 * ประเภท = "commerce_order"
 * )
 */
คลาส DeleteOrderAndApps ขยาย ActionBase {

  /**
   * {@inheritdoc}
   *
   */
  ดำเนินการฟังก์ชั่นสาธารณะ (สั่งซื้อ $ สั่งซื้อ = NULL) {
    // â¦
  }

  /**
   * {@inheritdoc}
   */
  การเข้าถึงฟังก์ชันสาธารณะ ($object, AccountInterface $account = NULL, $return_as_object = FALSE) {
    $result = $object->access('ลบ', $account, TRUE);
    คืน $return_as_object ? $result : $result->isAllowed();
  }
    
}

ฉันไม่แน่ใจว่าฉันต้องการมัน แต่ฉันก็มี mymodule/config/install/system.action.delete_order_and_apps.yml ไฟล์.

รหัสภาษา: th
สถานะ: จริง
การพึ่งพา:
  โมดูล:
    - commerce_order
id:delete_order_and_apps
ป้ายกำกับ: 'ลบคำสั่งซื้อและแอพ'
ประเภท: commerce_order
ปลั๊กอิน: delete_order_and_apps
การกำหนดค่า: { }

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

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

ฉันใช้ Drupal 8.9.20 และโมดูล Commerce 8.x-2.24

id flag
คำถามคืออะไร? เราต้องการคำตอบ
miststudent2011 avatar
fr flag
สิ่งนี้ช่วยได้ไหม https://drupal.stackexchange.com/questions/295329/custom-action-plugin-with-configurationform
liquidcms avatar
us flag
@miststudent2011 โพสต์นั้นดูเหมือนจะเกี่ยวกับการเพิ่มการกำหนดค่าสำหรับการดำเนินการเป็นส่วนใหญ่ ซึ่งไม่ใช่คำถามนี้ ส่วนเดียวที่กล่าวถึงซึ่งขาดหายไปอาจเป็นไฟล์ .schema; แต่ไม่เคยเพิ่มสิ่งเหล่านั้นสำหรับการกระทำ (โหนด) ที่ฉันใช้งานได้
Score:2
ธง cn

สมมติว่าคุณกำลังใช้ฟิลด์หลัก "การอัปเดตจำนวนมาก" ซึ่งมุมมองใบสั่งพาณิชย์ใช้ทันที คุณต้องสร้างการดำเนินการเป็นเอนทิตีการกำหนดค่า

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

ป้อนคำอธิบายรูปภาพที่นี่

หากคุณไม่สามารถติดตั้งโมดูลใหม่ได้ ให้เพิ่มเบ็ดการอัปเดตใน mymodule.post_update.php เพื่อสร้างการดำเนินการด้วยตนเอง จากนั้นเรียกใช้การอัปเดตฐานข้อมูล:

ฟังก์ชัน mymodule_post_update_add_my_action() {
  \Drupal::entityTypeManager()->getStorage('action')->create([
    'id' => 'delete_orders_and_apps',
    'label' => 'ลบคำสั่งซื้อและแอพ',
    'type' => 'commerce_order',
    'plugin' => 'delete_order_and_apps',
  ])->บันทึก();
}

หากคุณใช้ VBO คุณไม่จำเป็นต้องสร้างเอนทิตีการกำหนดค่า โมดูลจะดำเนินการโดยไม่ต้องใช้ หากไม่ได้ผล ตรวจสอบให้แน่ใจว่าชื่อทุกอย่างถูกต้อง มีการล้างแคช ฯลฯ เนื่องจากมีอยู่จริง:

ป้อนคำอธิบายรูปภาพที่นี่

liquidcms avatar
us flag
ดีใจที่รู้ว่าฉันทำถูกต้อง และฉันคิดว่ามันเป็นสิ่งที่จะถูกกระตุ้นด้วยการถอนการติดตั้งโมดูล/ติดตั้งใหม่เท่านั้น ฉันทำไปแล้วเมื่อวานนี้ก่อนที่ฉันจะโพสต์สิ่งนี้ วันนี้ฉันโหลดสำเนาใหม่ของฐานข้อมูลจากไซต์การผลิตของเรา เรียกใช้การนำเข้าการกำหนดค่าและสร้างแคชใหม่จำนวนมากก่อนที่จะเห็นคำตอบของคุณและกลับไปดูสิ่งนี้ - และหลังจากกิจกรรมของวัน ตอนนี้มันปรากฏขึ้น ไม่แน่ใจว่าอะไรเป็นตัวกระตุ้น แต่ดีใจที่รู้ว่ามันใช้งานได้ตามที่ฉันคาดไว้ ขอบคุณสำหรับคำตอบที่ละเอียดมาก

โพสต์คำตอบ

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