如何在 Drupal 8 的首页上获得注册表单?

How can I get the Register form on the front page in Drupal 8?

我一直试图在首页的弹出窗口中获取创建帐户表格(注册表格),但没有成功。

这里有人可以帮我举个可行的例子吗?

我尝试过改编 Drupal 7 中的示例,但无法使它们工作,我尝试制作自定义表单,但没有成功,我尝试安装可以处理此问题的模块,但是他们也没有用。

我为解决此问题所做的最后一次尝试是:

<?php

/**
* @file
* Functions to support theming in the themename theme.
*/

use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Component\Utility\UrlHelper;

/**
* Implements hook_preprocess_HOOK() for HTML document templates.
*/

function themename_preprocess_html(&$variables) {

$form = \Drupal::formBuilder()->getForm('Drupal\user\register');

return $form;
}

如有任何帮助,我们将不胜感激。 谢谢!

您可以使用此模块:https://www.drupal.org/project/formblock 它将一些附加表单公开为块(例如用户注册、新密码、联系人等)。所以在你安装它之后,你可以将块配置为只出现在首页上。注册块将不适用于经过身份验证的用户,或者如果不允许匿名用户创建新帐户。

但是,如果您使用最新的 Drupal8 稳定版,您还必须应用此补丁 https://www.drupal.org/node/2570221(如果在您检查它时它尚未提交),否则您将遇到致命问题错误。

此 link 解释了如何使用它以编程方式呈现登录和注册表单。

http://web-tricks.org/content/how-render-user-login-form-and-user-register-form-drupal-8

对于登录表单

$form = Drupal::formBuilder()->getForm(Drupal\user\Form\UserLoginForm::class) ;
$render = Drupal::service('renderer');
$variables['login_form'] = $render->renderPlain($form);

以及注册表

$entity = \Drupal::entityTypeManager()->getStorage('user')->create(array());
$formObject = \Drupal::entityTypeManager()
  ->getFormObject('user', 'register')->setEntity($entity);
$form = \Drupal::formBuilder()->getForm($formObject);
$variables['register_form'] = \Drupal::service('renderer')->render($form);