Skip to content

Instantly share code, notes, and snippets.

@pmichelazzo
Last active June 21, 2022 07:25
Show Gist options
  • Save pmichelazzo/2be4336c045eeebe6f53993fe31ecc28 to your computer and use it in GitHub Desktop.
Save pmichelazzo/2be4336c045eeebe6f53993fe31ecc28 to your computer and use it in GitHub Desktop.
Menu dinâmico em Drupal 8/9 - Link para edição dos dados do usuário

Aquele momento em que você precisa criar, por exemplo, um link para a página de edição dos dados do usuário e colocá-lo em um menu já existente, diferente do menu padrão do Drupal.

Você precisa de:

  • Um controller para realizar o redirecionamento
  • Um plugin para obter o ID do usuário logado
  • Um router para redirecionar o usuário para a página de edição
  • Um item de menu

Adicione os arquivos nos seguintes diretórios:

  • RedirectController.php -> my_module/src/Controller/
  • EditProfileMenuLink.php -> my_module/src/Plugin/Menu/
  • my_module.links.menu.yml -> my_module/
  • my_module.routing.yml -> my_module/

Não esqueça de limpar o cache (drush cr)

my_module.edit_profile:
path: '/user/id/{user}/edit'
defaults:
_title: 'Editar Perfil'
_controller: '\Drupal\my_module\Controller\UserController::redirect_edit'
requirements:
_permission: 'access content'
options:
parameters:
user:
type: entity:user
<?php
/**
* @file
* Contains \Drupal\my_module\Controller\UserController.
*/
namespace Drupal\my_module\Controller;
use Drupal\Core\Controller\ControllerBase;
/**
* Provides route responses for the my_module module.
*/
class RedirectController extends ControllerBase {
/**
* Redirect to the user's edit page.
*/
public function redirect_edit() {
$route = 'entity.user.edit_form';
$params = [
'user' => \Drupal::currentUser()->id(),
];
// We use the redirect method.
return $this->redirect($route, $params);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment