企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# Symfony 创建路由 > 原文: [http://zetcode.com/symfony/createroutes/](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 映射到`MyController`的`about()`方法。 Symfony 允许使用注解,XML,YAML 和 PHP 创建路由。 ## Symfony 创建路由示例 在以下示例中,我们以不同的方式创建路由。 ```php $ composer create-project symfony/skeleton createroutes ``` 使用`composer`,我们创建一个新的 Symfony 骨架项目。 ```php $ cd createroutes ``` 我们转到项目目录。 ```php $ composer require maker $ composer require annotations ``` 我们安装了两个模块:`annotations`和`maker`。 ```php $ composer require server --dev ``` 我们安装开发 Web 服务器。 ```php $ php bin/console make:controller MyController ``` 创建了`MyController`。 `src/Controller/MyController.php` ```php <?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; class MyController extends AbstractController { /** * @Route("/about", name="about") */ public function about() { return new Response("This is About page", Response::HTTP_OK, ['content-type' => 'text/plain']); } public function index() { return new Response("This is Index page", Response::HTTP_OK, ['content-type' => 'text/plain']); } public function news() { return new Response("This is News page", Response::HTTP_OK, ['content-type' => 'text/plain']); } public function contacts() { return new Response("This is Contacts page", Response::HTTP_OK, ['content-type' => 'text/plain']); } } ``` `MyController`具有使用注解,XML,YAML 和 PHP 创建的四个路由。 每个路由均返回简单文本。 ```php /** * @Route("/about", name="about") */ public function about() { return new Response("This is About page", Response::HTTP_OK, ['content-type' => 'text/plain']); } ``` About 路由与`@Route`注解映射。 `config/routes.yaml` ```php index: path: / controller: App\Controller\MyController::index ``` 索引路由映射到 YAML 配置文件中。 `config/routes.xml` ```php <?xml version="1.0" encoding="UTF-8" ?> <routes xmlns="http://symfony.com/schema/routing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd"> <route id="contacts" controller="App\Controller\MyController::contacts" path="/contacts" > </route> </routes> ``` 联系人路由映射到 XML 配置文件中。 `config/routes.php` ```php <?php use App\Controller\MyController; use Symfony\Component\Routing\Route; use Symfony\Component\Routing\RouteCollection; $routes = new RouteCollection(); $routes->add('news', new Route('/news', [ '_controller' => [MyController::class, 'news'] ])); return $routes; ``` 新闻路由是使用 PHP 代码创建的。 ```php $ php bin/console server:run ``` 我们启动开发服务器。 ```php $ curl localhost:8000/about This is About page $ curl localhost:8000/news This is News page $ curl localhost:8000/ This is Index page $ curl localhost:8000/contacts This is Contacts page ``` 我们使用`curl`生成请求。 在本教程中,我们使用注解,XML,YAML 配置和 PHP 代码在 Symfony 中创建了路由。 您可能也对以下相关教程感兴趣: [Symfony `@Route`注解教程](/symfony/routeannotation/), [Symfony 简介](/symfony/intro/), [Symfony 表单教程](/symfony/form/), [PHP 教程](/lang/php/)。