【发布时间】: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 需要文件名大小写来匹配类名的大小写。
-
上述问题的组合。谢谢!!