Контроллер отвечает за обработку каждого запроса, поступающего в приложение Symfony. Контроллер читает информацию из запроса. Затем создает и возвращает объект ответа клиенту.
Согласно Symfony, класс DefaultController находится в «src / AppBundle / Controller» . Это определяется следующим образом.
DefaultController.php
<?php namespace AppBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Response; class DefaultController extends Controller { }
Здесь компонент HttpFoundation определяет объектно-ориентированный уровень для спецификации HTTP, а FrameworkBundle содержит большую часть «базовой» функциональности инфраструктуры.
Объект запроса
Класс Request является объектно-ориентированным представлением сообщения HTTP-запроса.
Создание объекта запроса
Запрос может быть создан с помощью метода createFromGlobals () .
use Symfony\Component\HttpFoundation\Request; $request = Request::createFromGlobals();
Вы можете смоделировать запрос, используя Globals. Вместо того чтобы создавать запрос на основе глобальных переменных PHP, вы также можете имитировать запрос.
$request = Request::create( '/student', 'GET', array('name' => 'student1') );
Здесь метод create () создает запрос на основе URI, метода и некоторых параметров.
Переопределение объекта запроса
Вы можете переопределить глобальные переменные PHP, используя метод overrideGlobals () . Это определяется следующим образом.
$request->overrideGlobals();
Доступ к объекту запроса
Доступ к веб-странице можно получить в контроллере (метод действия) с помощью метода getRequest () базового контроллера.
$request = $this->getRequest();
Идентификация объекта запроса
Если вы хотите идентифицировать запрос в вашем приложении, метод PathInfo вернет уникальный идентификатор URL запроса. Он определяется следующим образом.
$request->getPathInfo();
Объект ответа
Единственное требование к контроллеру — вернуть объект Response. Объект Response содержит всю информацию из данного запроса и отправляет ее обратно клиенту.
Ниже приведен простой пример.
пример
use Symfony\Component\HttpFoundation\Response; $response = new Response(‘Default'.$name, 10);
Вы можете определить объект Response в JSON следующим образом.
$response = new Response(json_encode(array('name' => $name))); $response->headers->set('Content-Type', 'application/json');
Конструктор ответа
Конструктор содержит три аргумента —
- Содержание ответа
- Код статуса
- Массив заголовков HTTP
Ниже приведен основной синтаксис.
use Symfony\Component\HttpFoundation\Response; $response = new Response( 'Content', Response::HTTP_OK, array('content-type' => 'text/html') );
Например, вы можете передать аргумент содержимого как,
$response->setContent(’Student details’);
Точно так же вы можете передать и другие аргументы.
Отправка ответа
Вы можете отправить ответ клиенту, используя метод send () . Это определяется следующим образом.
$response->send();
Чтобы перенаправить клиента на другой URL, вы можете использовать класс RedirectResponse .
Это определяется следующим образом.
use Symfony\Component\HttpFoundation\RedirectResponse; $response = new RedirectResponse('http://tutorialspoint.com/');
FrontController
Один файл PHP, который обрабатывает каждый запрос, поступающий в ваше приложение. FrontController выполняет маршрутизацию разных URL-адресов во внутренние части приложения.
Ниже приведен основной синтаксис FrontController.
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; $request = Request::createFromGlobals(); $path = $request->getPathInfo(); // the URI path being requested if (in_array($path, array('', '/'))) { $response = new Response(’Student home page.'); } elseif (‘/about’ === $path) { $response = new Response(’Student details page’); } else { $response = new Response('Page not found.', Response::HTTP_NOT_FOUND); } $response->send();
Здесь функция in_array () ищет в массиве конкретное значение.