测量和提高Symfony代码性能欧宝娱乐app下载地址“></a>
        <a href=测量和提高Symfony代码性能欧宝娱乐app下载地址 在DEV,测试,暂存和生产中检查代码性能“></a>
        <a href=在DEV,测试,暂存和生产中检查代码性能

控制器

控制器要求对象,并创建并返回响应对象。响应可以是HTML页面,JSON,XML,文件下载,重定向,404错误或其他任何东西。控制器运行任何任意逻辑你的申请需要呈现页面的内容。

基础控制器级和服务欧宝娱乐app下载地址symfony \ bundle \ frameworkbundle \ controller \ AbstractController.可以扩展它以获得对帮助器方法的访问。

添加使用语句在控制器类上,然后修改LuckyController.要扩展它:

1 2 3 4 5 6 7 8 9 10
// src / controller / luckycontroller.php命名空间app \ controller;+使用控制器欧宝娱乐app下载地址Symfony \包\ FrameworkBundle \ \ AbstractController;- 班级LuckyController.+类LuckyController扩展了AbstractController{// ......}

就是这样!您现在可以访问方法$ this-> render()还有许多人你会学到下一个。

生成的urlgenerateUrl ()方法只是一个为给定路由生成URL的辅助方法:

$ url=$这一点->generateurl.'app_lucky_number'[“马克斯”=>10]);

获取服务服务.这些用于呈现模板,发送电子邮件,查询数据库以及您可以想到的任何其他“工作”。

如果需要在控制器中提供服务,可以使用类(或接口)名称类型提示参数。欧宝娱乐app下载地址Symfony会自动为您提供您需要的服务:

使用PSR \ log \ loggerInterface;使用欧宝娱乐app下载地址symfony \ component \ httpfoundation \ response;// ....../ * ** @Route(“/幸运/数字/{马克斯}”)* /公共函数数量int$最多LoggerInterface.$ logger.响应{$ logger.->信息“我们正在伐木!”);// ......}

太棒了!

您还可以键入哪些其他服务?要查看它们,请使用调试:autowiring.控制台命令:

1
$PHP BIN / CONSOLE调试:AUTOWIRING

如果你需要控制精确的参数的值,你可以捆绑参数名称如下:

  • yaml.
    1 2 3 4 5 6 7 8 9 10 11 12
    #配置/ services.yaml服务#……#显式配置服务app \ controller \ luckycontroller标签[Controller.Service_Arguments.]捆绑#对于任何$ logger参数,通过此特定服务$ logger.'@ monolog.logger.doctrine'#对于任何$projectDir参数,传递此参数值$ ProjectDir.'%kernel.project_dir%'
  • XML
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 17 18 19 20 21
    <! -  config / services.xml  - >< ?encoding="UTF-8"<容器xmlns =“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”XMLNS:XSI =“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation =“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services.https://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services/services-1.0.xsd“><服务><!——……--><! - 显式配置服务 - ><服务ID =“应用程序控制器\ \ LuckyController”><标签name =“controller.service_arguments”/><绑定关键=“$ logger”类型=“服务”ID =“monolog.logger.doctrine”/><绑定关键=“$ projectdir”>%kernel.project_dir%< / >绑定> < /服务> < /容器
  • PHP
    1 2 3 4 5 6 7 8 9 10 11
    // config / services.php使用app \ controller \ luckycontroller;使用欧宝娱乐app下载地址Symfony \ DependencyInjection \ \组件参考;美元的容器->登记LuckyController.::班级->addtag.'controller.service_arguments'->setBindings(['$ logger'=>参考'monolog.logger.doctrine'),'$ projectdir'=>'%kernel.project_dir%']);

与所有服务一样,您也可以使用常规服务构造函数注入在你的控制器中。

有关服务的更多信息,请参阅服务容器文章。

生成控制器欧宝娱乐app下载地址Symfony制造商并告诉symfon欧宝娱乐app下载地址y生成新的控制器类:

1 2 3 4
$PHP BIN / CONSOLE使:控制器BrandnewController创建:src / controller / brandnewcontroller.php/全新/ index.html.twig:创建模板

如果你想从教义那里生成整个角色实体使用:

1 2 3 4 5 6 7 8 9 10
$PHP箱/控制台:CRUD产品创建:src /控制器/ ProductController.php创建:src / form / producttype.php创建:模板/产品/ _delete_form.html.twig创建:模板/产品/ _form.html.twig创建:模板/产品/编辑.html.twig创建:模板/产品/ index.html.twig/产品/ new.html.twig:创建模板创建:模板/产品/ show.html.twig

1.2版中的新增功能:做:Crud.命令在MakerBundle 1.2中引入。

createNotFoundException()方法只是创建特殊的快捷方式欧宝娱乐app下载地址Symfony \组件\ \ NotFoundHttpException HttpKernel \异常对象最终触发了Symfony内的404 HTTP响应。欧宝娱乐app下载地址

的实例抛出异常欧宝娱乐app下载地址symfony \ component \ httpkernel \异常\ httpException,S欧宝娱乐app下载地址ymfony将使用适当的HTTP状态代码。否则,响应将具有500个HTTP状态代码:

//此异常最终生成500个状态错误\例外'出问题了!');

在每种情况下,一个错误页面显示给最终用户,一个完整的调试错误页面显示给开发人员(即当你在“调试”模式-参见配置环境).

若要自定义显示给用户的错误页面,请参见如何自定义错误页面文章。

管理会话框架。会话配置配置/包/ framework.yaml

要获得会话,请添加一个参数并键入提示欧宝娱乐app下载地址symfony \ component \ httpfoundation \ session \ sessioninterface

使用欧宝娱乐app下载地址symfony \ component \ httpfoundation \ response;使用欧宝娱乐app下载地址symfony \ component \ httpfoundation \ session \ sessioninterface;// ......公共函数指数SessionInterface$课程响应{//在稍后的用户请求期间存储属性以用于重用$课程->'foo'“酒吧”);//获取另一个控制器在另一个请求中设置的属性foobar美元=$课程->得到'foobar');//如果属性不存在,则使用默认值美元的过滤器=$课程->得到“过滤器”[]);// ......}

存储的属性留在会话中,以便在该用户的剩余部分中留在会话中。

有关更多信息,请参阅会话

Flash的消息形式提交:

使用欧宝娱乐app下载地址symfony \ component \ httpfoundation \请求;使用欧宝娱乐app下载地址symfony \ component \ httpfoundation \ response;// ......公共函数更新要求美元的请求响应{// ......如果$表格->isSubmitted()&&$表格->已验证()){//执行某种处理$这一点->AddFlash.'注意'“您的更改已被保存!”);// $ this-> addflash()等同于$ lequest-> getsession() - > getflashbag() - > add()返回$这一点->redirectToRoute......);}返回$这一点->渲染......);}

在处理请求后,控制器在会话中设置闪存消息,然后重定向。消息密钥(注意在此示例中)可以是任何问题:您将使用此键检索消息。

在下一页的模板(或甚至更好,在您的基础布局模板中)中,使用读取从会话中的任何闪存消息闪光()方法由Twig Global App变量

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 21 22 23 24 25 22
{#templates / base.html.twig#}{#只读并显示一个闪存消息类型#}{%为了信息app.flashes'注意'%}<div班级=“flash-notice”>{{信息}}div>{%终止%}{#阅读并显示几种类型的闪存消息#}{%为了标签消息app.flashes([“成功”“警告”])%}{%为了信息消息%}<div班级=“闪电,{{标签}}>{{信息}}div>{%终止%}{%终止%}{#读取并显示所有闪存消息#}{%为了标签消息app.flashes%}{%为了信息消息%}<div班级=“闪电,{{标签}}>{{信息}}div>{%终止%}{%终止%}

它是常用的注意警告错误作为不同类型的闪存消息的键,但您可以使用适合您需求的任何键。

小费

你可以使用窥视()方法来检索消息,同时将其保存在包中。

请求和响应对象早些时候,S欧宝娱乐app下载地址ymfony将通过要求对象指向任何具有类型暗示的控制器参数要求班级:

使用欧宝娱乐app下载地址symfony \ component \ httpfoundation \请求;使用欧宝娱乐app下载地址symfony \ component \ httpfoundation \ response;公共函数指数要求美元的请求响应{美元的请求->ISXMLHTTPREQUEST.();//这是一个Ajax请求?美元的请求->getPreferredlanguage(['en''fr']);//分别检索GET和POST变量美元的请求->询问->得到'页');美元的请求->请求->得到'页');//检索服务器变量美元的请求->服务器->得到'http_host');//检索由foo标识的上传文件的实例美元的请求->文件->得到'foo');//获取COOKIE值美元的请求->饼干->得到'phpsessid');//检索HTTP请求头,使用标准化的小写键美元的请求->标题->得到“主机”);美元的请求->标题->得到“内容类型”);}

要求类有几个公共属性和方法,返回您需要的任何信息。

就像要求, 这响应对象有一个公众标题财产。此对象是类型的欧宝娱乐app下载地址symfony \ component \ httpfoundation \ response headerbag并提供用于获取和设置响应标题的方法。标题名称归一化。结果,名称内容类型是否等价于名字内容类型内容类型

在sy欧宝娱乐app下载地址mfony中,需要一个控制器来返回一个响应对象:

使用欧宝娱乐app下载地址symfony \ component \ httpfoundation \ response;//创建一个简单的响应,带有200状态码(默认)美元的反应=响应'你好 '$名称响应::http_ok​​.);//创建一个具有200状态码的css响应美元的反应=响应'