Drupal 8 在自定义模块中渲染用户配置文件表单

问题描述 投票:0回答:2

我对 Drupal 8 还很陌生,我想在某个页面中呈现用户配置文件(user/[user_id]/edit),该页面将通过自定义模块创建。我想要这样做是因为我希望用户编辑他们的个人资料而无需进入用户/[user_id]/编辑页面。

这是我迄今为止在控制器中所做的事情:

namespace Drupal\my_account\Controller
use Drupal\user\ProfileForm

class MyAccountController{
  public function content(){
   $entity = \Drupal::entityManager()
  ->getStorage('user')
  ->create(array());

  $formObject = \Drupal::entityManager()
  ->getFormObject('user', 'default')
  ->setEntity($entity);

$form = \Drupal::formBuilder()->getForm($formObject);

    return ['form'=>$form];
  }
}

它设法显示表单,但没有用户内容。

php forms drupal-8 form-api
2个回答
0
投票
  1. 准备好要加载数据的用户对象。
  2. Drupal::formBuilder()->getForm(Drupal\user\ProfileForm::class, $user_obj)

0
投票

您需要使用加载函数而不是创建函数,它将加载用户配置文件表单并加载用户。

$user_id = \Drupal::currentUser()->id();
$user_entity = \Drupal::entityTypeManager()->getStorage('user')->load($user_id);
$formObject = \Drupal::entityTypeManager()->getFormObject('user', 'default')->setEntity($user_entity);
$form = \Drupal::formBuilder()->getForm($formObject);
© www.soinside.com 2019 - 2024. All rights reserved.