arch-8.x-1.x-dev/modules/order/src/Form/OrderStatusAddForm.php

modules/order/src/Form/OrderStatusAddForm.php
<?php

namespace Drupal\arch_order\Form;

use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Form\FormStateInterface;

/**
 * Controller for order status addition forms.
 *
 * @internal
 */
class OrderStatusAddForm extends OrderStatusBaseForm {

  /**
   * {@inheritdoc}
   */
  public function getFormId() {
    // @todo Remove in favour of base method.
    return 'order_status_admin_add_form';
  }

  /**
   * {@inheritdoc}
   */
  public function form(array $form, FormStateInterface $form_state) {
    $this->commonForm($form);

    $form['#title'] = $this->t('Add order status', [], ['context' => 'arch_order']);

    $form['submit'] = [
      '#type' => 'submit',
      '#value' => $this->t('Add order status', [], ['context' => 'arch_order']),
      '#name' => 'add_new_order_status',
      '#validate' => ['::validateCustom'],
      '#submit' => ['::submitForm', '::save'],
    ];

    return $form;
  }

  /**
   * {@inheritdoc}
   */
  public function save(array $form, FormStateInterface $form_state) {
    parent::save($form, $form_state);

    $t_args = [
      '%order_status_label' => $this->entity->label(),
      '%order_status' => $this->entity->id(),
    ];
    $this->logger('Order Status')->notice(
      'The %order_status_label (%order_status) order status has been created.',
      $t_args
    );
    $this->messenger()
      ->addStatus(
        $this->t('The order status %order_status_label has been created and can now be used.', $t_args)
      );

    $form_state->setRedirectUrl($this->entity->toUrl('collection'));
  }

  /**
   * {@inheritdoc}
   */
  public function actions(array $form, FormStateInterface $form_state) {
    // No actions needed.
    return [];
  }

  /**
   * Validates the language addition form on custom language button.
   */
  public function validateCustom(array $form, FormStateInterface $form_state) {
    $this->validateCommon($form, $form_state);
  }

  /**
   * {@inheritdoc}
   */
  protected function copyFormValuesToEntity(EntityInterface $entity, array $form, FormStateInterface $form_state) {
    $entity->set('id', $form_state->getValue('order_status'));
    $entity->set('label', $form_state->getValue('label'));
    $entity->set('description', $form_state->getValue('description'));
    $entity->set('default', $form_state->getValue('default'));
    $entity->set('locked', $form_state->getValue('locked'));

    // There is no weight on the edit form. Fetch all configurable languages
    // ordered by weight and set the new language to be placed after them.
    /** @var \Drupal\arch_order\Entity\OrderStatusInterface[] $order_statuses */
    $order_statuses = $this->orderStatusService->getOrderStatuses();
    $last_order_status = 0;
    foreach ($order_statuses as $order_status) {
      if ($order_status->getWeight() > $last_order_status) {
        $last_order_status = $order_status->getWeight();
      }
    }
    $entity->set('weight', $last_order_status + 1);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc