symfony 7.1 中创建控制器并输出页面:先运行 php bin/console make:controller hellocontroller 生成控制器和模板,再用 #[route] 属性定义路由,方法返回 response 或 $this->render() 即可访问。

创建控制器并输出页面,在 Symfony 7.1 中非常直接:用命令生成控制器类,写一个返回 Response 的方法,再配一条路由即可访问。不需要手动注册服务或修改核心配置,依赖注入和自动路由发现(attributes 路由)已默认启用。
用命令快速创建控制器
Symfony 7.1 推荐使用 make:controller 命令(需安装 symfony/maker-bundle):
- 运行
composer require --dev symfony/maker-bundle(如未安装) - 执行
php bin/console make:controller HelloController - 命令会自动生成
src/Controller/HelloController.php和对应模板templates/hello/index.html.twig - 该控制器已带一个
index()方法,并通过注解或属性路由自动暴露为/hello
手动编写控制器(适合理解原理)
若跳过命令,可手写一个极简控制器:
- 在
src/Controller/下新建PageController.php - 类需继承
AbstractController,方法返回Response或渲染的Response - 用 PHP 属性定义路由,例如:
#[Route('/about', name: 'app_about')] - 方法内可直接调用
$this->render()或new Response('Hello')
页面输出的两种常用方式
控制器中输出内容主要靠以下任一方式:
-
返回纯文本响应:用
use Symfony\Component\HttpFoundation\Response;,然后return new Response('<h1>Hi</h1>', 200, ['Content-Type' => 'text/html']); -
渲染 Twig 模板:调用
$this->render('page/home.html.twig', ['name' => 'Alice']),变量自动传入模板 - 模板文件放在
templates/目录下,支持继承、片段、过滤器等完整 Twig 功能
验证与调试小贴士
启动内置服务器后,可立即验证效果:
- 运行
symfony server:start或php -S localhost:8000 -t public - 访问
http://localhost:8000/hello(或你定义的路径) - 若页面空白或报错,检查日志:
tail -f var/log/dev.log;也可打开 Web Profiler(右下角小图标)查看请求详情 - 确保 PHP 版本 ≥ 8.1(Symfony 7.1 最低要求),旧版本可能无法加载属性路由











