How to create a form using block module in drupal 8?

前端 未结 3 1426
佛祖请我去吃肉
佛祖请我去吃肉 2021-02-03 14:40

I want build a form using a block module in Drupal 8. I am aware of building the forms in Drupal 7 but the same seems to be different in Drupal 8.

3条回答
  •  无人共我
    2021-02-03 15:15

    To build a form using block module, you can easily use Webform module where you can add a form and display as a block.


    If you mean to create a form programatically in the custom block, you can achieve that by creating two files shown below:

    Form file (src/Form/DemoForm.php):

     'email',
          '#title' => $this->t('Your .com email address.')
        );
        $form['show'] = array(
          '#type' => 'submit',
          '#value' => $this->t('Submit'),
        );
    
        return $form;
      }
    
      /**
       * {@inheritdoc}
       */
      public function validateForm(array &$form, array &$form_state) {
        $values = $form_state->getValues();
        if (strpos($values['email'], '.com') === FALSE ) {
          $form_state->setErrorByName('email', t('This is not a .com email address.'));
        } 
      }
    
      /**
       * {@inheritdoc}
       */
      public function submitForm(array &$form, array &$form_state) {
        drupal_set_message($this->t('Your email address is @email', array('@email' => $form_state['values']['email'])));
      }
    
    }
    

    Source: Building a Drupal 8 Module: Blocks and Forms.

    Block file (src/Plugin/Block/HelloBlock.php):

    getForm('\Drupal\mymodule\Form\HelloBlock');
        //$form['#attached']['js'][] = drupal_get_path('module', 'example') .  '/js/example.js';
        //$form['#markup'] = $this->t('Custom text');
        return $form;
      }
    
    }
    

    Source: Create a custom block.


    To add a form to the Block Configuration, see: Add a Form to the Block Configuration.

提交回复
热议问题