Маршруты и контроллеры в Symfony
В Symfony, маршруты и контроллеры играют ключевую роль в обработке HTTP-запросов и формировании HTTP-ответов.
Маршруты
Маршруты в Symfony определяют, как URL-адреса сопоставляются с конкретными контроллерами. Они определяются в файлах конфигурации маршрутов, которые могут быть написаны на YAML, XML или PHP.
Например, вот простой маршрут, определенный в файле YAML:
В этом примере маршрут с именем blog_list
сопоставляется с URL-адресом /blog
и контроллером App\Controller\BlogController::listAction
.
Контроллеры
Контроллеры в Symfony - это PHP-классы, которые обрабатывают HTTP-запросы и формируют HTTP-ответы. Они получают запрос, выполняют необходимые действия (например, извлекают данные из базы данных, выполняют вычисления, взаимодействуют с другими компонентами приложения) и возвращают ответ.
Вот пример контроллера, который соответствует маршруту blog_list
:
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
class BlogController extends AbstractController
{
public function listAction()
{
$blogPosts = // ... fetch blog posts from the database ...
return $this->render('blog/list.html.twig', [
'blogPosts' => $blogPosts,
]);
}
}
В этом примере контроллер BlogController
наследуется от AbstractController
и содержит метод listAction()
, который извлекает записи блога из базы данных и возвращает ответ, сформированный с помощью шаблона Twig blog/list.html.twig
.
Связь между маршрутами и контроллерами: Когда Symfony получает HTTP-запрос, он использует маршруты, чтобы определить, какой контроллер должен обработать запрос. Затем Symfony вызывает соответствующий метод контроллера и передает ему необходимые параметры. После того, как метод контроллера завершает обработку запроса, он возвращает HTTP-ответ, который Symfony отправляет клиенту.
Вы можете узнать больше о маршрутах и контроллерах Symfony в официальной документации: