drupal 8 how i create a custom form to programmatically created block and assign to it in variable in preprocess

Preprocess page assign a custom block to variables code

$customblock = \Drupal::service('plugin.manager.block')-  >createInstance('custom_block_id', []);

 $variables['home_meal_plan'] = $customblock->build(); 

*******************************************************************************

1 - Creating custom form

goto - custom_module\src\Form and create a customform.php

<?php

namespace Drupal\meal_plan\Form;

use Drupal\Core\Form\FormBase;

use Drupal\Core\Form\FormStateInterface;

use Symfony\Component\HttpFoundation\RedirectResponse;

use Drupal\cms_pages\Controller\CommonFunc;

/**

 * Provides meal plan form.

 *

 * @internal

 */

class HomeMealForm extends FormBase {

  /**

   * {@inheritdoc}

   */

  public function getFormId() {

    return 'home_meal_form';

  }

  /**

   * {@inheritdoc}

   */

  public function buildForm(array $form, FormStateInterface $form_state) {

    global $base_url;

    $hindi = CommonFunc::isHindi();

    if (\Drupal::currentUser()->isAnonymous()) {

      $footer_content = CommonFunc::getCmsContent('field_meal_plan_footer_content');

      $meal_plan_heading = CommonFunc::getCmsContent('field_meal_plan_heading');

        $form['age'] = [

          '#type' => 'textfield',

  '#attributes' => array('class' => array('inptFld'), 'id' => array('home-meal-age') ,'autocomplete' => array('off')),

          '#default_value' => '',

          '#placeholder' => 'Eg. 7',

          '#required' =>TRUE

        ];

      $query = \Drupal::entityQuery('taxonomy_term');

      $query->condition('vid', 'food_type');

      $query->sort('name');

      $tids = $query->execute();

      $options = [];

      $options = [

    'Vegan' => t('Vegan'),

        'Veg' => t('Veg'),

'Eggetarian' => t('Eggetarian'),

'Pescatarian' => t('Pescatarian'),

        'Nonveg' => t('Non-Veg'),

      ];

  $options1 = [

    '2-12' => t('2-12'),

        '13-17' => t('13-17'),

'18-25' => t('18-25'),

'25-50' => t('25-50'),

      ];


      $form['food_type'] = [

        '#type' => 'radios',

        '#options' => $options,

        '#default_value' => 'Vegan',

        '#required' => TRUE,

      ];

  

  $form['age_range'] = [

        '#type' => 'radios',

        '#options' => $options1,

        '#default_value' => '2-12',

        '#required' => TRUE,

      ];  

      $form['footer_content'] =[

        '#markup' => $footer_content,

      ];

      $form['submit'] = [

        '#type' => 'submit',

        '#value' => t("Apply"),

'#attributes' => array('class' => array('primary-button hvr-ripple-out')),

        '#validate' => ['::submitValidateMeal'],

      ];

      $form['#theme'] = 'HomeMealForm';

      $form['#meal_plan_heading'] = $meal_plan_heading;

      $form['#attached']['library'][] = 'meal_plan/meal_style';

      return $form;

    }

  }

  /**

   * {@inheritdoc}

   */

  public function submitValidateMeal(array &$form, FormStateInterface $form_state) {

    if ($form_state->getValue('age') == '') {

        $form_state->setErrorByName('age', 'Please select date of birth');

    } 

    elseif ($form_state->getValue('age') < 1) {

      $form_state->setErrorByName('age', 'Minimum required age is 1 year.');

    } 

    elseif ($form_state->getValue('age') > 12) {

      $form_state->setErrorByName('age', 'The recommendations are for healthy children between 1 year to 12 years of age. Please enter appropriate age.');

    }

  }

  /**

   * {@inheritdoc}

   */

  public function submitForm(array &$form, FormStateInterface $form_state) {

    global $base_url;

    $age = $form_state->getValue('age');

    $food_type = $form_state->getValue('food_type');

   $age_range = $form_state->getValue('age_range');

    $meal_data = ['age' => $age, 'food_preference' => $food_type];

    $session = \Drupal::request()->getSession();

    $session->set('meal_data', $meal_data);

    $form_state->setRedirect('meal_plan.unreg_routine');

  }

}

2- creating a custom block

Goto - custom_module\src\Plugin\Block

create a php file customblock.php

<?php

namespace Drupal\meal_plan\Plugin\Block;

use Drupal\Core\Block\BlockBase;

/**
 * @Block(
 *   id = "home_custom_meal_form_block",
 *   admin_label = @Translation("Custom Meal Plan Block"),
 *   category = @Translation("Custom Meal Plan Block")
 * )
 */
 
class customblock extends BlockBase {
  /**
   * {@inheritdoc}
   */
  public function build() {
    $form = \Drupal::formBuilder()->getForm('Drupal\meal_plan\Form\HomeMealForm');
    return $form;

  }
}

3- assign custom create Block to a variable in preprocess : in theme.theme file

/**

 * Implements hook_preprocess().

 */

function theme_new_preprocess(array &$variables, $hook) {

$variables['base_path'] = base_path();

$variables['is_front'] = \Drupal::service('path.matcher')->isFrontPage();

$current_path = \Drupal::service('path.current')->getPath();

$variables['current_path'] = $current_path;

$alised_path = \Drupal::service('path_alias.manager')->getAliasByPath($current_path);

$alised_path = ltrim($alised_path, '/');

$variables['alised_path'] = $alised_path;

$current_url = explode("/", $alised_path);

if($variables['is_front']) {

$customblock = \Drupal::service('plugin.manager.block')->createInstance('home_custom_meal_form_block', []);

        $variables['home_meal_plan'] = $customblock->build();

}

}


Write a program in PHP to reverse a number

A number can be written in reverse order. For example 12345 = 54321 <?php   $ num = 23456;   $ revnum = 0;   while ($ num > 1)   {   $...