Вы должны проверить эту ссылку. Symfony - большая картинка
Подробно объясняются все шаги, начиная с момента ввода URL в браузере до отображения страницы.
В основном все запросы отправляются на фронт-контроллер. Его задача - направлять запросы к соответствующему коду контроллера. Это делается с помощью маршрутов, определенных в файле app/config/routing.yml
. Контроллеры, определенные в src/<BundleName>/Controller/<name>
, выполняют некоторую бизнес-логику, например, получают данные из модели (репозиторий) и отправляют эту информацию в представление (шаблоны). Представления - это просто HTML-код. Symfony использует шаблонизатор Twig. Вместо включения блоков <?php ... ?>
в код HTML Symfony передает данные из контроллера, и их можно легко использовать внутри представления в блоках Twig {% %}
или {{ }}
.
Проще говоря, вот рабочий процесс:
- Браузер отправляет запрос
- Запрос получен во фронт-контроллере
web/app_dev.php
или web / app.php
- Фронт-контроллер проверяет маршруты, определенные в
app/config/routing.yml
, и отправляет запрос в соответствующий
контроллер, определенный в src/<BundleName>/Controller/<controller_name>
- Контроллер подготавливает содержимое, необходимое для HTML (пример - запрос к базе данных из
src/<BundleName>/Repository
), и отправляет информацию в представление - src/Resources/views/<twig file name>
- Представление создает HTML и отправляет его обратно на контроллер
- Контроллер создает HTTP-ответ и отправляет его обратно в браузер
Есть такие вещи, как app / AppKernel, которые находятся между ними, но я пропустил это.
Вот полезные выдержки из ссылки, приведенной выше:
URL:
http://localhost/Symfony/web/app_dev.php/demo/hello/Fabien
Что здесь происходит? Давайте разберем URL:
app_dev.php: это фронт-контроллер. Это уникальная точка входа в приложение, и она отвечает на все запросы пользователей;
/ demo / hello / Fabien: это виртуальный путь к ресурсу, к которому пользователь хочет получить доступ.
Ваша ответственность как разработчика заключается в написании кода, который отображает запрос пользователя (/ demo / hello / Fabien) на связанный с ним ресурс (HTML-страница Hello Fabien!).
Маршрутизация:
Symfony2 направляет запрос к коду, который его обрабатывает, пытаясь сопоставить запрошенный URL с некоторыми настроенными шаблонами. По умолчанию эти шаблоны (называемые маршрутами) определены в файле конфигурации app / config / routing.yml. Когда вы находитесь в среде dev, обозначенной фронт-контроллером app_ dev .php, также загружается файл конфигурации app / config / routing_dev.yml. В Standard Edition маршруты к этим «демонстрационным» страницам размещаются в этом файле:
_welcome:
pattern: /
defaults: { _controller: AcmeDemoBundle:Welcome:index }
Контроллер:
Symfony2 выбирает контроллер на основе значения _controller из конфигурации маршрутизации: AcmeDemoBundle: Welcome: index. Эта строка является логическим именем контроллера и ссылается на метод indexAction из класса Acme \ DemoBundle \ Controller \ WelcomeController:
class WelcomeController extends Controller
{
public function indexAction()
{
return $this->render('AcmeDemoBundle:Welcome:index.html.twig');
}
}
Вид:
Контроллер отображает шаблон src / Acme / DemoBundle / Resources / views / Demo / hello.html.twig
{% extends "AcmeDemoBundle::layout.html.twig" %}
{% block title "Hello " ~ name %}
{% block content %}
<h1>Hello {{ name }}!</h1>
{% endblock %}
Вы также можете проверить архитектуру Symfony2