【问题标题】:How to render custom form inside a custom block programmatically with drupal 8?如何使用 drupal 8 以编程方式在自定义块内呈现自定义表单?
【发布时间】:2018-10-06 15:13:34
【问题描述】:

我需要以编程方式在自定义块中呈现自定义表单。这是我在控制器中的代码:

  $form = \Drupal::formBuilder()->getForm('Drupal\wa_encuesta\Form\NewForm', $extra);
[enter image description here][1]  $form=render($form);

  $blockContent = BlockContent::create([
    'info' => $title,
    'type' => 'basic',
    'body'=>[
      'value' => $form,
      'format' => 'full_html'
    ]
  ]);
  $blockContent->save();

 //$block = Block::create([
 $block =  \Drupal\block\Entity\Block::create([
   'id' => 'about_us',
   'plugin' => 'block_content:' . $blockContent->uuid(),
   'region' => 'header',
   'provider' => 'block_content',
   'weight' => -100,
   'theme' => \Drupal::config('system.theme')->get('default'),
   'visibility' => array(),
   'settings' => [
     'label' => 'About us',
     'label_display' => FALSE,
   ],
 ]);
 $block->save();

表单呈现一个自定义块,但在提交时这不起作用。

【问题讨论】:

    标签: drupal-8


    【解决方案1】:

    我通常通过 hook_preprocess_block 或 hook_preprocess_node 和 twig 文件的组合来完成。

    示例: 说,你想在一个块中呈现它: 在主题文件中定义 hook_preprocess_block():

    function THEME_preprocess_block(&$variables) {
      $blockId = $variables['elements'][#id];
      //check for your block id
      $render_service = Drupal::service('renderer');
      $form_html = $render_service->renderPlain(Drupal\wa_encuesta\Form\NewForm::class, $extra);
      //set in variables
      $variables['my_form_html'] = $form_html;
    }
    

    现在,为你的块确定你的树枝文件名,然后输入:

    {{ my_form_html }}
    

    【讨论】:

    • 您好,非常感谢您的回答。我正在使用民意调查自定义模块。管理员可以从自定义管理用户 interfaz 创建许多投票,并且他可以将投票放置在页面上的任何区域。请打开链接:drive.google.com/file/d/1k1vCY__6eSJAvksEttNmUefe4QdVLzEy/view PS:我在drupal开发模块(Google Maps API、Forms、创建表格等)方面有一些经验。
    【解决方案2】:

    请在此处查看我对同一问题的回答:How to create a form using block module in drupal 8?

    基本上你只需创建一个单独的表单和一个块,在块中渲染表单,然后将块放置在所需的区域中。

    【讨论】:

    • 嗨弗兰克非常感谢您的回答。我正在使用民意调查自定义模块。用户可以从自定义管理用户 interfaz 创建许多投票,并且他可以将投票放置在页面上的任何区域。请打开链接。 drive.google.com/file/d/1k1vCY__6eSJAvksEttNmUefe4QdVLzEy/view PS:我在drupal开发模块(Google Maps API、Forms、创建表格等)方面有一些经验。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多