Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
novicell/custom_forms / src / LazyBuilder / CustomFormLazyBuilder.php
Size: Mime:
<?php

namespace Drupal\custom_forms\LazyBuilder;

use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Language\LanguageInterface;
use Drupal\Core\Language\LanguageManagerInterface;
use Drupal\Core\Security\TrustedCallbackInterface;
use Drupal\custom_forms\Entity\CustomForm;

class CustomFormLazyBuilder implements TrustedCallbackInterface{

    /**
     * @var \Drupal\Core\Entity\EntityViewBuilderInterface
     *   The view builder for custom forms.
     */
    protected $viewBuilder;

    /**
     * @var \Drupal\Core\Language\LanguageManagerInterface
     *   The language manager.
     */
    protected $languageManager;

    public function __construct(EntityTypeManagerInterface $entity_type_manager, LanguageManagerInterface $language_manager) {
        $this->viewBuilder = $entity_type_manager->getViewBuilder('custom_form');
        $this->languageManager = $language_manager;
    }

    public function generateCustomForm($form_id) {
        // If for some reason the form id is not included, we return nothing.
        if (empty($form_id)) {
            return [];
        }

        $current_language = $this->languageManager->getCurrentLanguage(LanguageInterface::TYPE_CONTENT);

        /** @var \Drupal\custom_forms\CustomFormInterface $custom_form */
        $custom_form = CustomForm::load($form_id);

        $build = $this->viewBuilder->view($custom_form, 'full', $current_language->getId());

        return $build;
    }

    public static function trustedCallbacks() {
        return ['generateCustomForm'];
    }

}