Рабочий процесс с Symfony2? - PullRequest
9 голосов
/ 31 января 2012

Я новичок в symfony2.Я начал его с нескольких уроков, а затем начал строить SYMBLOG .Я понял это, и я могу добавить или изменить функциональность.У меня есть небольшая путаница в рабочем процессе, я имею в виду, как файлы работают вместе, чтобы отобразить страницу или произвести вывод.Может кто-нибудь объяснить мне подробно с самого начала, как этот процесс происходит в symfony2.начиная с запроса пользователя, скажем, пользователь вводит URL, пока symfony2 не покажет результаты.пожалуйста, включите routing.yml в поток.

1 Ответ

21 голосов
/ 31 января 2012

Вы должны проверить эту ссылку. Symfony - большая картинка

Подробно объясняются все шаги, начиная с момента ввода URL в браузере до отображения страницы.

В основном все запросы отправляются на фронт-контроллер. Его задача - направлять запросы к соответствующему коду контроллера. Это делается с помощью маршрутов, определенных в файле app/config/routing.yml. Контроллеры, определенные в src/<BundleName>/Controller/<name>, выполняют некоторую бизнес-логику, например, получают данные из модели (репозиторий) и отправляют эту информацию в представление (шаблоны). Представления - это просто HTML-код. Symfony использует шаблонизатор Twig. Вместо включения блоков <?php ... ?> в код HTML Symfony передает данные из контроллера, и их можно легко использовать внутри представления в блоках Twig {% %} или {{ }}.

Проще говоря, вот рабочий процесс:

  1. Браузер отправляет запрос
  2. Запрос получен во фронт-контроллере web/app_dev.php или web / app.php
  3. Фронт-контроллер проверяет маршруты, определенные в app/config/routing.yml, и отправляет запрос в соответствующий контроллер, определенный в src/<BundleName>/Controller/<controller_name>
  4. Контроллер подготавливает содержимое, необходимое для HTML (пример - запрос к базе данных из src/<BundleName>/Repository), и отправляет информацию в представление - src/Resources/views/<twig file name>
  5. Представление создает HTML и отправляет его обратно на контроллер
  6. Контроллер создает 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...