如何在 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);
我一直试图在首页的弹出窗口中获取创建帐户表格(注册表格),但没有成功。
这里有人可以帮我举个可行的例子吗?
我尝试过改编 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);