Я создаю Checkbox в Checkout Flow, CheckoutPane. Как я могу отправить значение флажка объекту в профиле пользователя или заказе.
Описание: мне нужен флажок в CheckoutPane, когда клиент выбирает флажок и нажимает кнопку «Отправить», я должен сохранить значение в поле в заказе или профиле конкретного пользователя с датой. Когда клиент устанавливает флажок в первый раз, он скрыт для будущих заказов.
Флажок печатается правильно, но не может отправить значение флажка объекту по порядку или, лучше, объекту в профиле пользователя. Я создаю поле field_customer_check в заказе и пробую его так же, как в примере потока проверки Drupal Commerce с комментариями. 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 = "согласен_условиям",
* label = @Translation("Постоянное согласие"),
* )
*/
класс AgreeTerms расширяет 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']);
}
}