在Symfony创建您的第一个页面ob娱乐下载
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.3,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
在Symfony创建您的第一个页面ob娱乐下载
创建一个新的页面——无论是一个HTML页面或一个JSON端点——是一个简单的两个步骤:
- 创建一个路线(如:路线是URL。
/对
)页面,点一个控制器; - 创建一个控制器:一个控制器构建页面的功能编写。你把传入的请求信息,并使用它来创建一个Symfonyob娱乐下载
响应
对象,它可以容纳HTML内容,或任何其他一个JSON字符串。
就像在网上一样,每个交互都是由一个HTTP请求。你的工作是纯粹和简单:明白,请求并返回一个响应。
创建一个页面:路线和控制器
提示
在继续之前,确保您已经阅读了安装章,可以访问你的新Symfony应用程序在浏览器中。ob娱乐下载
假设您希望创建一个页面/幸运数字
生成一个幸运(随机)并打印数量。为此,创建一个类和一个方法里面,当有人去执行/幸运数字
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
/ / src / AppBundle /控制器/ LuckyController.php名称空间AppBundle\控制器;使用Sensio赞助\包\FrameworkExtraBundle\配置\路线;使用ob娱乐下载\组件\HttpFoundation\响应;类LuckyController{/ * * *@Route(“/幸运数字”)* /公共函数numberAction(){美元数量=兰德(0,One hundred.);返回新响应(“< html > <身体>的幸运数字:。美元数量。“< /身体> < / html >”);}}
之前,对其进行测试!
提示
如果你建立一个适当的虚拟主机Apache或Nginx、替换http://localhost: 8000
你的主机名,比如http://ob娱乐下载symfony.dev/app_dev.php/lucky/number
。
如果你看到一个幸运数字印制回你,恭喜你!但是在你跑去买彩票,看看这是如何工作的。
的@Route
以上numberAction ()
被称为一个注释它定义了URL模式。你也可以写在YAML(或其他格式):读到这个的路由一章。事实上,大多数路由实例文档的标签显示每个格式看起来如何。
下面的方法注释-numberAction
——被称为控制器和你建立页面。唯一的规则是,一个控制器必须返回一个Symfoob娱乐下载ny响应对象(甚至你会学会弯曲这个规则最终)。
创建一个JSON响应
的响应
对象你还在你的控制器可以包含HTML、JSON或者二进制文件像一个图像或PDF。您可以轻松地设置HTTP头或状态代码。
假设您希望创建一个返回的JSON端点的幸运数字。添加第二个方法LuckyController
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日
/ / src / AppBundle /控制器/ LuckyController.php/ /……类LuckyController{/ /……/ * * *@Route(“/ api /幸运数字”)* /公共函数apiNumberAction(){美元数据=数组(“lucky_number”= >兰特(0,One hundred.),);返回新响应(json_encode (美元数据),200年,数组(“内容类型”= >“application / json”));}}
试着在你的浏览器:
你甚至可以缩短这与方便JsonResponse:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日
/ / src / AppBundle /控制器/ LuckyController.php/ /……/ / - - >不要忘记这个新使用的声明使用ob娱乐下载\组件\HttpFoundation\JsonResponse;类LuckyController{/ /……/ * * *@Route(“/ api /幸运数字”)* /公共函数apiNumberAction(){美元数据=数组(“lucky_number”= >兰特(0,One hundred.),);/ /调用json_encode和设置content - type头返回新JsonResponse (美元数据);}}
动态URL模式:/幸运/数量/{数}
哇,你做的很好!但Symob娱乐下载fony的路由可以做更多的事。现在假设你想让用户可以去/ /数字/幸运5
生成5幸运数字。有一个更新途径{通配符}
结尾部分:
- 注释
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/ / src / AppBundle /控制器/ LuckyController.php/ /……类LuckyController{/ * * *@Route(“/幸运/数量/{数}")* /公共函数numberAction(){/ /……}/ /……}
因为{数}
“占位符”,页面的URL不同的:现在的url匹配工作/ * /幸运号码
——例如/ /数字/幸运5
。最好的部分是,您可以访问这个值并使用它在你的控制器:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日24
/ / src / AppBundle /控制器/ LuckyController.php/ /……类LuckyController{/ * * *@Route(“/幸运/数量/{数}")* /公共函数numberAction(美元数){美元数字=数组();为(美元我=0;美元我<美元数;美元我+ +){美元数字[]=兰德(0,One hundred.);}美元numbersList=内爆(”、“,美元数字);返回新响应(“< html > <身体>幸运数字:“。美元numbersList。“< /身体> < / html >”);}/ /……}
去试一试/ /数字/幸运XX
——XX替换为任何数量:
您应该看到7幸运数字打印出来!你可以得到任何的价值{占位符}
通过添加在你的路线美元的占位符
控制器参数。只要确保它们有相同的名字。
可以做一个路由系统很多更多的,就像支持多个占位符(例如。/博客/{类别}/{页面})
),使占位符可选,迫使占位符匹配正则表达式(如这样{数}
必须是一个数字)。
了解这一切,成为一个路由的专家路由一章。
呈现一个模板(服务容器)
如果你从控制器返回的HTML,您可能需要提供一个模板。幸运的是,Symfony附ob娱乐下载带了树枝:模板语言很简单,强大,非常有趣。
到目前为止,LuckyController
不扩展任何基类。最简单的方法使用树枝——或其他工具在Symfony是扩展Symfony的基地ob娱乐下载控制器类:
1 2 3 4 5 6 7 8 9 10
/ / src / AppBundle /控制器/ LuckyController.php/ /……/ / - - >添加新使用的声明使用ob娱乐下载\包\FrameworkBundle\控制器\控制器;类LuckyController扩展控制器{/ /……}
使用模板
服务
这并不能改变什么,但它做给你使用Symfony的ob娱乐下载容器允许您访问:类似数组的对象每一个系统中有用的对象。这些有用的对象被称为服务,Symfoob娱乐下载ny的船只与服务对象呈现树枝模板,另一个日志消息和更多。
呈现一个树枝模板,使用一个服务调用模板
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日
/ / src / AppBundle /控制器/ LuckyController.php/ /……类LuckyController扩展控制器{/ * * *@Route(“/幸运/数量/{数}")* /公共函数numberAction(美元数){/ /……美元numbersList=内爆(”、“,美元数字);美元html=美元这- >容器- >get (“模板”)- >呈现(“幸运/ number.html.twig”,数组(“luckyNumberList”= >美元numbersList));返回新响应(美元html);}/ /……}
您将了解更多关于重要的“服务容器”当你继续阅读。现在,你只需要知道它拥有大量的对象,你可以get ()
任何对象通过使用它的昵称,如模板
或日志记录器
。的模板
服务的一个实例TwigEngine这有一个呈现()
方法。
但这可以更简单!通过扩展控制器
类,你也得到很多的快捷方法,呈现()
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日24日25
/ / src / AppBundle /控制器/ LuckyController.php/ /……/ * * *@Route(“/幸运/数量/{数}")* /公共函数numberAction(美元数){/ /……/ * $ = $ this - > html容器- >(模板)- >渲染('幸运/ number.html。嫩枝”,数组(“luckyNumberList”= > numbersList美元));返回新的反应(html)美元;* // /渲染:一个快捷方式同上返回美元这- >呈现(“幸运/ number.html.twig”,数组(“luckyNumberList”= >美元numbersList));}
了解更多关于这些快捷方式方法以及它们如何工作控制器一章。
提示
对于更高级的用户,您还可以注册您的控制器为服务。
创建的模板
如果你现在更新,你会得到一个错误:
找不到模板“幸运/ number.html.twig”
通过创建一个新的应用程序/资源/视图/幸运
目录,并将number.html.twig
文件里面:
- 嫩枝
- PHP
1 2 3 4 5 6
{# / number.html app /资源/视图/幸运。树枝#}{%扩展“base.html。嫩枝' %}{%块身体%}<h1>幸运数字:{{luckyNumberList}}< /h1>{%endblock%}
欢迎来到树枝!这个简单的文件已经展示了基础知识:如何{{variableName}}
语法是用来打印一些东西。的luckyNumberList
是一个变量,你进入的模板吗渲染
调用在你的控制器。
的{% base.html延伸”。嫩枝' %}
住在指向一个布局文件应用程序/资源/视图/ base.html.twig和你的新项目。这是真的基本没有任何特色(一个HTML结构),它是你的定制。的{%块体%}
使用树枝的一部分继承制度把内容放在中间base.html.twig
布局。
刷新,看看你的模板在行动!
如果你查看源代码,你现在有一个基本的HTML结构由于base.html.twig
。
这只是表面的树枝的权力。当你准备掌握它的语法,循环数组,使其他模板和其他很酷的东西,阅读模板一章。
探索项目
您已经创建了一个灵活的URL,呈现一个模板,使用继承和创建一个JSON端点。好了!
是时候探索和阐明文件在您的项目中。你已经工作在最重要的两个目录:
-
app /
- 包含配置和模板。基本上,任何不PHP代码在这里。
-
src /
- PHP代码住在这里。
99%的时间,你会工作的src /
(PHP文件)或app /
(一切)。当你变得更先进,您将了解可以做些什么在每一个。
的app /
目录还拥有其他一些东西,比如缓存目录应用程序/缓存/
日志目录应用程序/日志/
和app / AppKernel.php
,您将使用启用新的包(之一非常短的PHP文件列表app /
)。
的src /
目录只有一个目录src / AppBundle
,生活里面的一切。一捆就像一个“插件”,你可以找到开源包并安装到您的项目。但即使是你的住在一个包,通常的代码AppBundle
(虽然没有什么特别之处AppBundle
)。找到更多关于束,为什么你可能会创建多个包(提示:项目之间共享代码),看到的包一章。
所以在项目的其他目录呢?
-
供应商/
- 供应商(即第三方)库和包的下载作曲家包管理器。
-
web /
-
这是项目的文档根目录和包含任何可公开访问的文件,就像CSS图像和执行应用程序的Symfony前端控制器(ob娱乐下载
app_dev.php
和app.php
)。
另请参阅
ob娱乐下载Symfony是灵活的。如果你需要,你可以很容易地覆盖默认的目录结构。看到如何覆盖Symfony的默认目录ob娱乐下载结构。
应用程序配置
ob娱乐下载(打开你的Symfony提供了几个内置的捆绑包app / AppKernel.php
安装文件),你可能会更多。的主要配置文件包应用程序/配置/ config.yml
:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14
# app / config / config.yml#……框架:秘密:“% %的秘密”路由器:资源:“% kernel.root_dir % / config / routing.yml”#……枝:调试:“% kernel.debug %”strict_variables:“% kernel.debug %”#……
的框架
关键配置FrameworkBundle,嫩枝
关键配置TwigBundle等等。一个很多在Symfony的行为可以控制ob娱乐下载通过改变一个选项在这个配置文件。找出,看到配置引用部分。
或者得到一个大的例子转储所有有效的配置下一个键,使用方便app /控制台
命令:
1
应用程序/控制台配置:美元dump-reference框架
后面有更多的权力Symfony的配置系统,包括环境、进口和参数。ob娱乐下载学习所有的它,看到配置一章。