在我的D8站点上,我希望在所有用户登录后将其重定向到一个内部URL。下面是我的片段:
function mymodule_user_login($account) {
$url = Url::fromUri('internal:/dashboard-overview');
$response = new RedirectResponse($url->toString());
$response->send();
}这个片段重定向到“拒绝访问”错误页面,即使对管理员也是如此。没有设置访问此URL的权限。尽管如此,即使对于管理员,页面也没有加载。有什么帮助吗?
发布于 2022-10-18 12:26:44
你试过这个模块了吗?https://www.drupal.org/project/redirect_after_login,我想它会完成你想要的任务。
发布于 2022-10-04 13:45:57
Drupal 8和9您需要修改登录表单并添加一个提交处理程序,它将负责重定向。不能直接在表单alter中使用$ form _state->setRedirectUrl(),因为它将被UserForm::submitForm()覆盖。
/**
* Implements hook_form_FORM_ID_alter().
*/
function mymodule_form_user_login_form_alter(&$form, FormStateInterface $form_state) {
$form['#submit'][] = 'mymodule_user_login_submit';
}
/**
* Form submission handler for user_login_form().
*
* Redirects the user to the dashboard after logging in.
*/
function mymodule_user_login_submit(&$form, FormStateInterface $form_state) {
$url = Url::fromRoute('mymodule.dashboard');
// Check if a destination was set, probably on an exception controller.
// @see \Drupal\user\Form\UserLoginForm::submitForm()
$request = \Drupal::service('request_stack')->getCurrentRequest();
if (!$request->request->has('destination')) {
$form_state->setRedirectUrl($url);
}
else {
$request->query->set('destination', $request->request->get('destination'));
}
}https://stackoverflow.com/questions/73854232
复制相似问题