I want to show anonymous users a "Register" link.
So, in mymodule.menu.yml
:
mymodule.userregister:
title: 'Register an Account'
url: 'internal:/user/register'
weight: 10
menu_name: account
This adds a register link to the account menu next to the login/logout link-- great! Except it also shows up for authenticated users, who get an "access denied" error if they click it.
I looked in user.links.menu.yml
in code/modules/user
to try to find something I could use:
user.page:
title: 'My account'
weight: -10
route_name: user.page
menu_name: account
user.logout:
weight: 10
menu_name: account
class: Drupal\user\Plugin\Menu\LoginLogoutMenuLink
I also checked user.routing.yml
:
user.register:
path: '/user/register'
defaults:
_entity_form: 'user.register'
_title: 'Create new account'
requirements:
_access_user_register: 'TRUE'
user.logout:
path: '/user/logout'
defaults:
_controller: '\Drupal\user\Controller\UserController::logout'
requirements:
_user_is_logged_in: 'TRUE'
I'm stumped. How can I make my menu link only show up for anonymous users?
_user_is_logged_in: 'FALSE'
_user_is_logged_in: 'FALSE"
as a requirement inmymodule.links.menu.yml
and clearing caches doesn't hide the link from my admin account when logged in.route_name: user.register
instead of theurl: ...
didn't work?route_name: user.register
is ok, but likeurl
still shows for admins.AccessDeniedSubscriber
to redirect authenticated users to their edit pages. I think that is the root cause of the problem.