创建一个控制器
创建一个控制器
我们的留言板项目已经生活在生产服务器但我们骗了一点。这个项目没有任何web页面。主页是担任一个无聊的404错误页面。让我们解决这个问题。
当一个HTTP请求,喜欢主页(http://localhost: 8000 /
),Sob娱乐下载ymfony试图找到一个路线相匹配的请求路径(/
这里)。一个路线请求路径和之间的联系吗PHP调用,一个函数创建HTTP响应的请求。
这些调用被称为“控制器”。在Syob娱乐下载mfony中,大多数控制器作为PHP类实现。你可以手动创建这样一个类,但因为我们喜欢去快,让我们看看Symfony可以帮助我们。ob娱乐下载
懒惰与制造商包
生成控制器毫不费力地,我们可以使用ob娱乐下载symfony / maker-bundle
包,它已经安装的一部分webapp
包中。
制造商包可以帮助你产生很多不同的类。在这本书中,我们将使用它所有的时间。每个“发电机”中定义一个命令和命令的一部分使
命令名称空间。
Symfob娱乐下载ony控制台内置列表
一个给定的名称空间下命令列出所有可用的命令;用它来发现所有发电机制造商提供的包:
1
美元ob娱乐下载symfony控制台使列表
选择一个配置格式
创建的第一个控制器项目之前,我们需要决定我们想要使用的配置格式。ob娱乐下载Symfony支持YAML、XML、PHP和PHP的属性。
为配置相关的包,YAML是最好的选择。这是使用的格式配置/
目录中。通常,当你安装一个新的包,包的配方将以添加一个新文件.yaml
该目录。
为相关配置PHP代码,属性旁边是一个更好的选择,因为他们定义代码。让我解释的一个例子。当请求传入时,一些配置需要告诉Symfony请求路径应该由一个特定的控制器(一个PHP类)。ob娱乐下载当使用YAML、XML或PHP配置格式,涉及两个文件(配置文件和PHP控制器文件)。当使用属性,配置是直接在控制器类中完成的。
您可能想知道如何猜你需要安装的软件包名称功能?大多数时候,你不需要知道。在许多情况下,Symfony包ob娱乐下载含包安装的错误消息。运行ob娱乐下载symfony控制台:消息
没有信使
包例如会结束,包含一个异常提示安装正确的包。
生成一个控制器
创建您的第一个控制器通过:控制器
命令:
1
美元ob娱乐下载ConferenceController symfony控制台:控制器
命令创建一个ConferenceController
类下src /控制器/
目录中。生成的类包含一些样板代码准备调整:
的#(路线(“/会议”,名字:“app_conference”))
属性的index ()
方法一个控制器(旁边的配置代码配置)。
当你遇到/会议
在浏览器中,控制器执行并返回一个响应。
调整路线,使其匹配的主页:
1 2 3 4 5 6 7 8 9 10 11
- - - / src /控制器/ ConferenceController.php+ + + b / src /控制器/ ConferenceController.php@@ 8 7 + 8 7 @@使用Symob娱乐下载fony \组件\路由\注释\路线;类ConferenceController延伸AbstractController {- #[路线(“/会议”,名字:“app_conference”))+ #[路线(“/”,名字:“主页”))公共函数指数():响应{返回$ this - >渲染(会议/ index . html。嫩枝”,(
这条路线的名字
当我们想参考主页会有用的代码。而不是硬编码/
路径,我们将使用名称的路线。
而不是默认的呈现的页面,我们返回一个简单的HTML:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
- - - / src /控制器/ ConferenceController.php+ + + b / src /控制器/ ConferenceController.php@@ -11 8 + 11 13 @@类ConferenceController延伸AbstractController #(路线(“/”,名字:“主页”)]公共函数指数():反应{-返回$ this - >渲染(会议/ index . html。嫩枝”,(——“controller_name”= >“ConferenceController”,-]);+新响应(< < <返回EOF+ < html >+ <身体>+ < img src = " /图片/在建。gif " / >身体+ < / >+ < / html >+ EOF+);}}
刷新浏览器:
一个控制器的主要责任是返回一个HTTP响应
的请求。
其余的章节是关于我们不会保持的代码,让我们提交更改:
1 2
美元git添加。美元git commit - m“添加索引控制器”
添加一个复活节彩蛋
演示一个可以利用的信息请求的响应,让我们添加一个小的复活节彩蛋。每当主页包含一个查询字符串你好=法比安
,让我们添加一些文本来迎接的人:
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日26日27日28
- - - / src /控制器/ ConferenceController.php+ + + b / src /控制器/ ConferenceController.php24 @@ @@ 3、17 + 3名称空间的应用程序\控制器;控制器使ob娱乐下载用Symfony \包\ FrameworkBundle \ \ AbstractController;+使用Syob娱乐下载mfony \ HttpFoundation \ \组件请求;组件使用ob娱乐下载Symfony \ \ HttpFoundation \反应;使用Syob娱乐下载mfony \组件\路由\注释\路线;类ConferenceController延伸AbstractController{#[路线(“/”,名字:“主页”))公共函数指数():反应+公共函数指数(请求请求美元):反应{+ $迎接=”;+如果($ name = $请求- >查询- >获取('你好')){+ $迎接= sprintf (“< h1 > % s你好!< / h1 >”, htmlspecialchars函数(名字)美元);+}+新的响应(< < <返回EOF < html > <身体>+ $问候< img src = " /图片/在建。gif " / > < /身体> < / html >
ob娱乐下载通过一个Symfony公开请求数据请求
对象。当Symfob娱乐下载ony看到这个type-hint控制器参数,它会自动知道将它传递给你。我们可以使用它来得到的的名字
从查询字符串和添加一个条目<标题>
标题。
试着打/
然后/ ?你好=法比安
在浏览器中看到的不同。
请注意
注意到电话htmlspecialchars函数()
为了避免XSS的问题。这是当我们将自动完成切换到一个合适的模板引擎。
我们也可以让这个名字URL的一部分:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- - - / src /控制器/ ConferenceController.php+ + + b / src /控制器/ ConferenceController.php@@ 9日11 + 9,11 @@使用Symob娱乐下载fony \组件\路由\注释\路线;类ConferenceController延伸AbstractController {- #[路线(“/”,名字:“主页”))公共函数指数(请求美元请求):反应+ #[路线(“/ hello /{名称}”,名字:“主页”))+公共函数指数(string name = "):美元的回应{$ = "打招呼;——如果($ name = $请求- >查询- >获取('你好')){+如果(美元的名字){$迎接= sprintf (“< h1 > % s你好!< / h1 >”, htmlspecialchars函数(名字)美元);}
的{名称}
路线是一个动态的一部分线路参数——它就像一个通配符。你现在可以打/你好
然后/ hello /法比安
在浏览器中获得相同的结果。你可以得到的价值的{名称}
通过添加一个控制器参数参数相同的名字。所以,美元的名字
。
回复我们刚刚做出的更改:
1
美元git checkout src /控制器/ ConferenceController.php
1 2
美元src /控制器/ ConferenceController.php git重置头美元git checkout src /控制器/ ConferenceController.php
调试变量
一个伟大的调试助手是Symfonyob娱乐下载dump ()
函数。它总是可用的,允许你将复杂的变量在一个漂亮的和交互式的格式。
临时的变化src /控制器/ ConferenceController.php
将请求对象:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
- - - / src /控制器/ ConferenceController.php+ + + b / src /控制器/ ConferenceController.php17 @@ @@ 3 14 + 3名称空间的应用程序\控制器;控制器使ob娱乐下载用Symfony \包\ FrameworkBundle \ \ AbstractController;+使用Syob娱乐下载mfony \ HttpFoundation \ \组件请求;组件使用ob娱乐下载Symfony \ \ HttpFoundation \反应;使用Syob娱乐下载mfony \组件\路由\注释\路线;类ConferenceController延伸AbstractController{#[路线(“/”,名字:“主页”))公共函数指数():反应+公共函数指数(请求请求美元):反应{美元+转储(请求);+新的响应(< < <返回EOF < html > <身体>
在刷新页面时,注意到新的工具栏“目标”图标;它允许您检查转储。点击它来访问一个完整的页面,导航是由简单:
回复我们刚刚做出的更改:
1
美元git checkout src /控制器/ ConferenceController.php
1 2
美元src /控制器/ ConferenceController.php git重置头美元git checkout src /控制器/ ConferenceController.php
要进一步
- Symfob娱乐下载ony的路由系统;
- ob娱乐下载SymfonyCasts路线、控制器和页面教程;
- PHP的属性;
- 的HttpFoundation组件;
- XSS(跨站点脚本)安全攻击;
- 的ob娱乐下载Symfony路由小抄。