php - 表单成功后重定向 symfony 4

标签 php symfony redirect symfony4

我遵循了本教程:https://symfony.com/doc/current/security/form_login_setup.html

为了构建我的表单并且呈现正常,我在表中创建了一个用户并使用其用户名和密码登录,但被重定向到空白页面,但我已将其设置为转到 /仪表板

我的 security.yaml

encoders:
    App\Entity\User: bcrypt
providers:
    in_memory: { memory: ~ }
    user_provider:
        entity:
            class: App\Entity\User
            property: username
firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    main:
        anonymous: ~
        http_basic: ~
        provider:   user_provider
        form_login:
            login_path: login
            check_path: login
            default_target_path: /dashboard

我什至尝试使用隐藏的_target输入:

<input type="hidden" name="_target_path" value="{{ path('dashboard') }}" />

登录 Controller .php

<?php
    namespace App\Controller;

    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;

    class LoginController extends Controller
    {
        public function login(Request $request, AuthenticationUtils $authenticationUtils)
        {
            $error    = $authenticationUtils->getLastAuthenticationError();
            $lastUser = $authenticationUtils->getLastUsername();

            return $this->render('login/form.html.twig', array('last_username' => $lastUser, 'error' => $error));
        }
    }

完整代码库:https://github.com/BPSBiro/symfony-forms-errors

但它只是重定向到 /login 作为空白页面。我知道这不会出错(凭据方面),因为如果我在两个字段中都输入乱码,那么它会返回到 /login 并显示表单和错误消息(无效凭据)。

表单成功后如何重定向?

最佳答案

所以我把你的 github 拿下来并原封不动地运行它。创建了一个用户,然后尝试登录。出现指向 App\Entity\User::serialize 的异常。您在这里遇到了一个小问题:

public function serialize()
{
    # causes infinite nesting
    # return $this->serialize(array($this->id, $this->username, $this->password));

    # the fix
    return serialize(array($this->id, $this->username, $this->password));
}

令人困惑的是为什么你得到的是空白页而不是异常。我使用内置服务器进行测试:

bin/console server:start

我猜测您的 Apache 配置实际上正在生产模式下运行,这会抑制您的错误。

关于php - 表单成功后重定向 symfony 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50503950/

相关文章:

php - 适用于PHP的轻量级Web应用程序服务器?

php - 如何访问在另一个 PHPUnit 测试中初始化的对象

php - fatal error :在第 24 行调用 C:\wamp\www\FINAL login\memberpage.php 中未定义的方法 PDO::fetch()

php - 如何在不修改其内容的情况下忽略 phpunit 中的测试方法?

linux - 运行一个在后台等待输入的进程,不暂停也不发送输入

java - Linux Java 进程重定向

php - 从 mysql 表中回显行作为 html 下拉值的结果

angularjs - symfony2 REST,AngularJs access-Control-Allow-Origin

php - Symfony2 错误的实例通过 Twig 扩展传递

laravel - 在 Laravel 中登录多个角色后重定向