原文: http://zetcode.com/symfony/createroutes/

Symfony 创建路由教程展示了如何在 Symfony 中使用注解,XML,YAML 和 PHP 创建路由。

Symfony

Symfony 是一组可重用的 PHP 组件和一个用于 Web 项目的 PHP 框架。 Symfony 于 2005 年发布为免费软件。Symfony 的原始作者是 Fabien Potencier。 Symfony 受到 Spring 框架的极大启发。

路由

路由是从 URL 路径到控制器的映射。 例如,/about URL 映射到MyControllerabout()方法。

Symfony 允许使用注解,XML,YAML 和 PHP 创建路由。

Symfony 创建路由示例

在以下示例中,我们以不同的方式创建路由。

  1. $ composer create-project symfony/skeleton createroutes

使用composer,我们创建一个新的 Symfony 骨架项目。

  1. $ cd createroutes

我们转到项目目录。

  1. $ composer require maker
  2. $ composer require annotations

我们安装了两个模块:annotationsmaker

  1. $ composer require server --dev

我们安装开发 Web 服务器。

  1. $ php bin/console make:controller MyController

创建了MyController

src/Controller/MyController.php

  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. class MyController extends AbstractController
  7. {
  8. /**
  9. * @Route("/about", name="about")
  10. */
  11. public function about()
  12. {
  13. return new Response("This is About page", Response::HTTP_OK,
  14. ['content-type' => 'text/plain']);
  15. }
  16. public function index()
  17. {
  18. return new Response("This is Index page", Response::HTTP_OK,
  19. ['content-type' => 'text/plain']);
  20. }
  21. public function news()
  22. {
  23. return new Response("This is News page", Response::HTTP_OK,
  24. ['content-type' => 'text/plain']);
  25. }
  26. public function contacts()
  27. {
  28. return new Response("This is Contacts page", Response::HTTP_OK,
  29. ['content-type' => 'text/plain']);
  30. }
  31. }

MyController具有使用注解,XML,YAML 和 PHP 创建的四个路由。 每个路由均返回简单文本。

  1. /**
  2. * @Route("/about", name="about")
  3. */
  4. public function about()
  5. {
  6. return new Response("This is About page", Response::HTTP_OK,
  7. ['content-type' => 'text/plain']);
  8. }

About 路由与@Route注解映射。

config/routes.yaml

  1. index:
  2. path: /
  3. controller: App\Controller\MyController::index

索引路由映射到 YAML 配置文件中。

config/routes.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <routes xmlns="http://symfony.com/schema/routing"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://symfony.com/schema/routing
  5. http://symfony.com/schema/routing/routing-1.0.xsd">
  6. <route id="contacts" controller="App\Controller\MyController::contacts" path="/contacts" >
  7. </route>
  8. </routes>

联系人路由映射到 XML 配置文件中。

config/routes.php

  1. <?php
  2. use App\Controller\MyController;
  3. use Symfony\Component\Routing\Route;
  4. use Symfony\Component\Routing\RouteCollection;
  5. $routes = new RouteCollection();
  6. $routes->add('news', new Route('/news', [
  7. '_controller' => [MyController::class, 'news']
  8. ]));
  9. return $routes;

新闻路由是使用 PHP 代码创建的。

  1. $ php bin/console server:run

我们启动开发服务器。

  1. $ curl localhost:8000/about
  2. This is About page
  3. $ curl localhost:8000/news
  4. This is News page
  5. $ curl localhost:8000/
  6. This is Index page
  7. $ curl localhost:8000/contacts
  8. This is Contacts page

我们使用curl生成请求。

在本教程中,我们使用注解,XML,YAML 配置和 PHP 代码在 Symfony 中创建了路由。

您可能也对以下相关教程感兴趣: Symfony @Route注解教程Symfony 简介Symfony 表单教程PHP 教程