Рабочий процесс с Symfony2?

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

Ответ 1

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

В нем подробно описываются все действия, связанные с тем, как вы вводите URL-адрес в браузере на страницу, получаемую визуализацией.

В основном все запросы переходят к Front Controller. Его задача - направить запросы на соответствующий код контроллера. Он делает это с помощью маршрутов, определенных в файле 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) на связанный с ним ресурс (страница Hello Fabien! HTML).

Routing:

Symfony2 направляет запрос на код, который обрабатывает его, пытаясь сопоставить запрошенный URL с некоторыми настроенными шаблонами. По умолчанию эти шаблоны (называемые маршрутами) определяются в файле конфигурации app/config/routing.yml. Когда вы находитесь в среде dev, указанной указателем app_ dev.php, также загружается файл конфигурации app/config/routing_dev.yml. В стандартной версии маршруты к этим "демонстрационным" страницам помещаются в этот файл:

_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 architecture