我几天前就开始使用Symfony 2了。我目前正在研究用于市场研究目的的工具。该工具应该由多个模块组成,每个模块都是Symfony项目中的一个包。我当然可以将这些模块全部放在一个包中,但我们的想法是尽可能保持代码的可维护性,以便简化修复错误或改进和添加新模块的过程。
所以基本上我的文件夹结构是这样的:
AppBundle - >控制器 - > 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"));
}
}
我真的很不知道为什么它不起作用。我真的希望你们能帮助我。 :)
答案 0 :(得分:1)