几天前我才开始使用 Symfony 2。我目前正在开发一种用于市场研究目的的工具。这个工具应该由多个模块组成,每个模块都是 Symfony 项目中的一个包。我当然可以将这些模块全部放在一个包中,但我的想法是使代码尽可能可维护,以简化修复错误或改进和添加新模块的过程。
所以基本上我的文件夹结构是这样的:
AppBundle -> Controller -> DefaultController:在网站初始加载时使用。它除了返回位于我的前端包中的渲染的 Twig 模板之外没有做任何事情。
公司| |__> AdministrationBundle:这应该是可以配置模块,可以添加或编辑用户等的管理后端。
|
|__> FrontendBundle: this is the core bundle so to say. It contains the basic Twig template, which is used to render the general site structure and navigation
|
|__> Module_1_Bundle: that's the first module which is supposed to being navigated to basic Twig template generated in the frontend controller
|
|__> Module_2_Bundle: same as module 1.
前端渲染正确,没有问题。但是一旦我尝试导航到模块 1 或模块 2(我还没有开始使用管理包),我得到的只是
哎呀!发生错误 服务器返回“500 内部服务器错误”。东西坏了。请让我们知道发生此错误时您在做什么。我们会尽快修复它。给您造成的任何不便,请原谅。
Apache 错误日志和 Symfony 日志中都没有任何内容,我根本不知道那里发生了什么。我已经在 app/config/routing.yml 中配置了到模块的初始路由,如下所示:
app:
resource: @AppBundle/Controller
type: annotation
company_frontend:
resource: "@CompanyFrontendBundle/Resources/config/routing.yml"
company_backend:
resource: "@CompanyAdministrationBundle/Resources/config/routing.yml"
company_module_1:
resource: "@CompanyModule_1_Bundle/Resources/config/routing.yml"
company_module_2:
resource: "@CompanyModule_2_Bundle/Resources/config/routing.yml"
然后每个 routing.yml 包含相应模块所需的路由,基本上是这样的(例如 company/Module_1_Bundle/Resources/config/routing.yml):
company_module_1:
path: /module1
defaults: { _controller: CompanyModule_1_Bundle:Module1:index }
相应的 Module1Controller 是这样的:
<?php
namespace Company\Module_1_Bundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class Module1Controller extends Controller
{
public function indexAction()
{
return $this->render('CompanyModule_1_Bundle:Default:index.html.twig', array("headerText" => "some Module 1 heading"));
}
}
我真的很想知道为什么它不起作用。我真的希望你们能帮助我。:)