【问题标题】:Symfony class case-sensitivity errorSymfony 类区分大小写错误
【发布时间】:2018-06-16 09:49:10
【问题描述】:

我是 symfony 的新手——这个周末刚刚启动并运行了一个应用程序,并尝试了解如何将东西组合在一起。

我创建了一个带有控制器和模板的路由。

routes.yaml

test:
    path: /test
    controller: App\Controller\test::initialize

test.php(控制器)

namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class test extends Controller {

    public function initialize() {

        return new Response("hello test");
    }
} 

现在我只想重命名我的类,使其符合类名的约定(大写)。

class test {...} ----> class Test {...}

路线将遵循:

test:
    path: /test
    controller: App\Controller\Test::initialize  # test becomes Test

简单。

但是当我这样做时,我得到一个运行时错误:

Case mismatch between loaded and declared class names: "App\Controller\test" vs "App\Controller\Test".

我尝试清除服务器缓存。在重命名该类的所有提及后,我真的不明白从哪里读取App\Controller\test

什么可能导致这个错误?

【问题讨论】:

  • Symfony 将大量信息(包括类名)存储在缓存中。通常缓存会自行更新,但有一些东西会破坏它。所以只需使用核选项并完全删除缓存目录。 rm -r var/cache 应该可以解决问题。之后运行 bin/console 以验证一切正常。
  • 您是否也将 test.php 重命名为 Test.php? Symfony 需要文件名大小写来匹配类名的大小写。
  • 上述问题的组合。谢谢!!

标签: php symfony routes yaml


【解决方案1】:

对于遇到此问题的任何人,以上两条评论解决了我的问题。

  • Symfony 要求控制器文件名与类匹配
  • 运行rm -r var/cache 清除bin/console cache:clear 命令以外的缓存

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 2015-07-08
    • 2012-06-09
    • 2012-12-01
    • 2013-03-06
    • 2020-02-18
    • 2021-07-16
    相关资源
    最近更新 更多