Php Symfony Flex:覆盖FOSUser登录表单

Php Symfony Flex:覆盖FOSUser登录表单,php,symfony,symfony-flex,Php,Symfony,Symfony Flex,我了解了覆盖FOSUser登录表单的两种方法: 将模板文件放入应用程序/资源/ 重写子捆绑包中的控制器 然而,随着项目结构发生了重大变化 至于选项1:不再有app/Resources文件夹。我将模板存储在/templates中 关于选项2:不再有AppBundle 现在,我扩展了FOSUser的安全控制器: <?php namespace App\Controller; use FOS\UserBundle\Controller\SecurityController as BaseCo

我了解了覆盖FOSUser登录表单的两种方法:

将模板文件放入应用程序/资源/ 重写子捆绑包中的控制器 然而,随着项目结构发生了重大变化

至于选项1:不再有app/Resources文件夹。我将模板存储在/templates中

关于选项2:不再有AppBundle

现在,我扩展了FOSUser的安全控制器:

<?php

namespace App\Controller;

use FOS\UserBundle\Controller\SecurityController as BaseController;

class SecurityController extends BaseController
{
    public function renderLogin(array $data)
    {
        return $this->render('/Admin/Login/index.html', $data);
    }
}

应用程序仍然呈现FOSUserBundle表单。我有一种感觉,我必须以某种方式注册avobe控制器。在FOSUser配置中,没有用于此的指令。如何实现这一点?

我认为您遵循了正确的路径,但忘记了更改配置。您需要告诉fosuser使用不同的表单文件

检查,第106行和第109行:


我没有用flex检查这个解决方案,但我的一个朋友用symfony 4检查了,效果很好。

在symfony 4中,您只需将文件放入/templates/bundles/FosUserBundle即可


希望有帮助。

我认为您还应该覆盖默认的/login路由,尝试使用path/login将新路由指向控制器上的renderLogin方法。是否清除缓存并将方法更改为protected。