使用 symfony/website-skeleton
初始化项目后, 现在来添加第一个自定义网页.
- 添加快捷 Router 支持包. 使用
annotations
比yaml
配置文件更方便.
leo@MacMini8:~/Documents/symfony/demo$ composer require annotations
- 添加一个Hello 页面Controller, 位于:
src/Controller/FirstController.php
<?php
/**
* src/Controller/FirstController.php
*/
// 命名空间 App 已经在 composer.json 里已经指向到 src 目录.
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class FirstController
{
/**
* 通过: http://127.0.0.1:8000/hello 访问此方法.
*
* @Route("/hello", name="url_hello")
*/
public function hi()
{
$name = 'Baby';
return new Response(
sprintf('<html><body>Hello: %s!</body></html>', $name)
);
}
}
使用
bin/console server:run
启动服务器, 浏览器打开: http://127.0.0.1:8000/hello 可以正常访问到Hello: Baby!

- 创建新页面, 使用视图模板显示页面
创建一个视图文件, 用默认的 twig 模板引擎.
{# templates/hello/say.html.twig #}
{% extends 'base.html.twig' %}
{% block body %}
<h1>{{ name }} say: Hello!</h1>
{% endblock %}
修改 Controller, 增加一个新方法: say
//...
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class FirstController extends AbstractController
{
/**
* @Route("/say", name="url_say")
*/
public function say()
{
$name = 'Baby';
return $this->render(
'hello/say.html.twig', //指定视图模板在 templates 文件夹中的路径
['name' => $name] // 模板中传递的数据
);
}
//....
}
使用浏览器访问: http://127.0.0.1:8000/say 页面输出正常.

网友评论