cloud-8.x-2.0-beta1/modules/cloud_service_providers/aws_cloud/src/Form/Vpc/SubnetCreateForm.php

modules/cloud_service_providers/aws_cloud/src/Form/Vpc/SubnetCreateForm.php
<?php

namespace Drupal\aws_cloud\Form\Vpc;

use Drupal\Core\Form\FormStateInterface;
use Drupal\aws_cloud\Form\Ec2\AwsCloudContentForm;
use Drupal\aws_cloud\Entity\Vpc\Subnet;

/**
 * Form controller for the subnet entity create form.
 *
 * @ingroup aws_cloud
 */
class SubnetCreateForm extends AwsCloudContentForm {

  /**
   * Overrides Drupal\Core\Entity\EntityFormController::buildForm().
   */
  public function buildForm(array $form, FormStateInterface $form_state, $cloud_context = '') {
    /* @var $entity \Drupal\aws_cloud\Entity\Ec2\Snapshot */
    $form = parent::buildForm($form, $form_state);
    $this->ec2Service->setCloudContext($cloud_context);
    $entity = $this->entity;

    $weight = -50;

    $form['subnet'] = [
      '#type' => 'details',
      '#title' => $this->t('Subnet'),
      '#open' => TRUE,
      '#weight' => $weight++,
    ];

    $form['subnet']['name'] = [
      '#type'          => 'textfield',
      '#title'         => $this->t('Name'),
      '#maxlength'     => 255,
      '#size'          => 60,
      '#required'      => TRUE,
    ];

    $vpcs = $this->ec2Service->getVpcs();
    ksort($vpcs);
    $form['subnet']['vpc_id'] = [
      '#type'          => 'select',
      '#title'         => $this->t('VPC CIDR (ID)'),
      '#options'       => $vpcs,
      '#default_value' => $entity->getVpcId(),
      '#required'      => TRUE,
    ];

    $form['subnet']['cidr_block'] = [
      '#type'          => 'textfield',
      '#title'         => $this->t('IPv4 CIDR block'),
      '#description'   => $this->t('The range of IPv4 addresses for your VPC in CIDR block format, for example, 10.0.0.0/24. Block sizes must be between a /16 netmask and /28 netmask.'),
      '#maxlength'     => 255,
      '#size'          => 60,
      '#required'      => TRUE,
    ];

    unset($form['tags']);

    $this->addOthersFieldset($form, $weight++, $cloud_context);

    $form['actions'] = $this->actions($form, $form_state, $cloud_context);

    return $form;
  }

  /**
   * Overrides Drupal\Core\Entity\EntityFormController::save().
   */
  public function save(array $form, FormStateInterface $form_state) {
    $this->trimTextfields($form, $form_state);

    $cloud_context = $this->routeMatch->getParameter('cloud_context');

    $entity = $this->entity;
    $entity->setCloudContext($cloud_context);

    $result = $this->ec2Service->createSubnet([
      'VpcId' => $entity->getVpcId(),
      'CidrBlock' => $entity->getCidrBlock(),
    ]);

    if (isset($result['Subnet'])
      && ($entity->setSubnetId($result['Subnet']['SubnetId']))
      && ($entity->save())
    ) {

      $this->setTagsInAws($entity->getSubnetId(), [
        Subnet::TAG_CREATED_BY_UID => $entity->getOwner()->id(),
        'Name' => $entity->getName(),
      ]);

      // Update the subnet.
      $this->ec2Service->updateSubnets([
        'SubnetIds' => [$entity->getSubnetId()],
      ], FALSE);

      $message = $this->t('The @label "%label" has been created.', [
        '@label'       => $entity->getEntityType()->getLabel(),
        '%label'       => $entity->label(),
      ]);

      $this->messenger->addMessage($message);
      $form_state->setRedirect('view.aws_cloud_subnet.list', ['cloud_context' => $entity->getCloudContext()]);
    }
    else {
      $message = $this->t('The @label "%label" couldn\'t create.', [
        '@label' => $entity->getEntityType()->getLabel(),
        '%label' => $entity->label(),
      ]);
      $this->messenger->addError($message);
    }
  }

}

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

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