我对 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];
}
}
它设法显示表单,但没有用户内容。
您需要使用加载函数而不是创建函数,它将加载用户配置文件表单并加载用户。
$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);