Tôi tạo Hộp kiểm trong Luồng thanh toán, CheckoutPane. Làm cách nào tôi có thể gửi Giá trị của Hộp kiểm tới Thực thể trong Hồ sơ người dùng hoặc Đơn hàng.
Mô tả: Tôi cần một Hộp kiểm trong CheckoutPane, khi Khách hàng chọn Hộp kiểm và nhấp vào gửi, tôi phải lưu giá trị vào một Trường trong Đơn hàng hoặc Hồ sơ của người dùng cụ thể kèm theo ngày. Khi khách hàng chọn hộp kiểm lần đầu tiên, hộp kiểm này sẽ bị ẩn cho các đơn đặt hàng trong tương lai.
Hộp kiểm được in chính xác, nhưng không thể gửi giá trị của hộp kiểm cho một thực thể theo thứ tự hoặc tốt hơn là một thực thể trong hồ sơ người dùng. Tôi tạo Trường field_customer_check trong Đơn đặt hàng và thử giống như trong Ví dụ về quy trình thanh toán Drupal Commerce có nhận xét. https://docs.drupalcommerce.org/commerce2/developer-guide/checkout/create-custom-checkout-pane
hàm công khai submitPaneForm(mảng &$pane_form, FormStateInterface $form_state, mảng &$complete_form) {
$values = $form_state->getValue($pane_form['#parents']);
$this->order->setData('order_comment', $values['comment']);
}
Đây là Mã trước đây của tôi cho CheckoutPane:
<?php
không gian tên Drupal\mymodule_checkout\Plugin\Commerce\CheckoutPane;
sử dụng Drupal\commerce_checkout\Plugin\Commerce\CheckoutPane\CheckoutPaneBase;
sử dụng Drupal\commerce_checkout\Plugin\Commerce\CheckoutPane\CheckoutPaneInterface;
sử dụng Drupal\Core\Form\FormStateInterface;
sử dụng Drupal\commerce\InlineFormManager;
sử dụng Drupal\Core\Entity\EntityTypeManagerInterface;
sử dụng Symfony\Component\DependencyInjection\ContainerInterface;
sử dụng Drupal\commerce_checkout\Plugin\Commerce\CheckoutFlow\CheckoutFlowInterface;
/**
* Cung cấp khung thông báo hoàn thành.
*
* @C CommerceCheckoutPane (
* id = "đồng_ý_điều_kiện",
* nhãn = @Translation("Đồng ý vĩnh viễn"),
* )
*/
class AgreeTerms extends CheckoutPaneBase implements CheckoutPaneInterface {
chức năng công khai buildPaneForm(mảng $pane_form, FormStateInterface $form_state, mảng &$complete_form) {
$order_id = $this->order->id();
$pane_form['user_check_accept'] = [
'#type' => 'hộp kiểm',
'#default_value' => SAI,
'#title' =>$this->t('Tiêu đề hộp kiểm của tôi'),
'#required' => SAI,
'#weight' => $this->getWeight(),
];
trả về $pane_form;
}
hàm công khai submitPaneForm(mảng &$pane_form, FormStateInterface $form_state, mảng &$complete_form) {
$values = $form_state->getValue($pane_form['#parents']);
// Cách gửi giá trị từ Hộp kiểm trong Trường Boolean trong Đơn hàng
// Sự cố, field_customer_check không lấy được dữ liệu
$this->order->setData('field_customer_check', $values['user_check_accept']);
}
}