Я начал использовать 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"));
}
}
Я действительно почесал голову, почему это не работает. Я очень надеюсь, что вы, ребята, сможете мне помочь. 🙂
Хорошо, вы можете официально назвать меня идиотом. 🙂 После обновления кода я решил немного почистить свой сервер. Частично это переименовывало каталог, в котором находился проект, и настраивало конфигурацию apache2 vhost. Что я не откорректируйте настройки развертывания в PHPStorm, хотя это означает, что все сделанные мной изменения по-прежнему сохраняются в старой папке (которую PHPStorm создал заново), поэтому я никогда не видел никаких изменений, поскольку файлы в недавно переименованной папке остались нетронутыми. Черт. Сейчас все отсортировано и работает. Еще раз спасибо. 🙂
Других решений пока нет …