ฉันสร้างช่องทำเครื่องหมายใน Checkout Flow, CheckoutPane ฉันจะส่งค่าของช่องทำเครื่องหมายไปยังเอนทิตีในโปรไฟล์ผู้ใช้หรือคำสั่งซื้อได้อย่างไร
คำอธิบาย: ฉันต้องการช่องทำเครื่องหมายใน CheckoutPane เมื่อลูกค้าเลือกช่องทำเครื่องหมายและคลิกส่ง ฉันต้องบันทึกค่าในฟิลด์ในคำสั่งซื้อหรือโปรไฟล์ของผู้ใช้ที่ระบุพร้อมวันที่ เมื่อลูกค้าเลือกช่องทำเครื่องหมายในครั้งแรก ช่องดังกล่าวจะซ่อนไว้สำหรับคำสั่งซื้อในอนาคต
กล่องกาเครื่องหมายพิมพ์ถูกต้อง แต่ไม่สามารถส่งค่าของกล่องกาเครื่องหมายไปยังเอนทิตีตามลำดับ หรือดีกว่าเอนทิตีในโปรไฟล์ผู้ใช้ ฉันสร้างฟิลด์ field_customer_check ในคำสั่งซื้อและลองทำแบบเดียวกับใน Drupal Commerce Checkout Flow Example พร้อมความคิดเห็น https://docs.drupalcommerce.org/commerce2/developer-guide/checkout/create-custom-checkout-pane
ฟังก์ชันสาธารณะ submitPaneForm (อาร์เรย์ &$pane_form, FormStateInterface $form_state, อาร์เรย์ &$complete_form) {
$values = $form_state->getValue($pane_form['#parents']);
$this->order->setData('order_comment', $values['comment']);
}
นี่คือรหัสก่อนหน้าของฉันสำหรับ CheckoutPane:
<?php
เนมสเปซ Drupal\mymodule_checkout\Plugin\Commerce\CheckoutPane;
ใช้ Drupal\commerce_checkout\Plugin\Commerce\CheckoutPane\CheckoutPaneBase
ใช้ Drupal\commerce_checkout\Plugin\Commerce\CheckoutPane\CheckoutPaneInterface
ใช้ Drupal\Core\Form\FormStateInterface;
ใช้ Drupal\commerce\InlineFormManager
ใช้ Drupal\Core\Entity\EntityTypeManagerInterface;
ใช้ Symfony\Component\DependencyInjection\ContainerInterface;
ใช้ Drupal\commerce_checkout\Plugin\Commerce\CheckoutFlow\CheckoutFlowInterface
/**
* ให้บานหน้าต่างข้อความเสร็จสิ้น
*
* @CommerceCheckoutPane(
* id = "agree_terms",
* label = @Translation("เห็นด้วยอย่างถาวร"),
* )
*/
class AgreementTerms ขยาย CheckoutPaneBase ใช้ CheckoutPaneInterface {
ฟังก์ชันสาธารณะ buildPaneForm (อาร์เรย์ $pane_form, FormStateInterface $form_state, อาร์เรย์ &$ Complete_form) {
$order_id = $this->order->id();
$pane_form['user_check_accept'] = [
'#type' => 'ช่องทำเครื่องหมาย',
'#default_value' => เท็จ
'#title' =>$this->t('ชื่อช่องทำเครื่องหมายของฉัน'),
'#required' => เท็จ
'#weight' => $this->getWeight(),
];
ส่งคืน $pane_form;
}
ฟังก์ชันสาธารณะ submitPaneForm (อาร์เรย์ &$pane_form, FormStateInterface $form_state, อาร์เรย์ &$complete_form) {
$values = $form_state->getValue($pane_form['#parents']);
// วิธีส่งค่าจากช่องทำเครื่องหมายในช่องบูลีนในคำสั่งซื้อ
// ปัญหา field_customer_check ไม่ได้รับข้อมูลใดๆ
$this->order->setData('field_customer_check', $values['user_check_accept']);
}
}