创建页面Symfony2ob娱乐下载
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.1,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
/对页面),并指定一个控制器(这是一个PHP函数)Symfony2时应执行传入请求的URL匹配路由模式;ob娱乐下载
创建一个控制器:一个控制器是一个PHP函数,传入的请求,并将它转换成Symfony2ob娱乐下载响应
对象返回给用户。
这个简单的方法是美丽的,因为它匹配,网络的工作方式。每一个交互网络是由一个HTTP请求。应用程序的工作是解释请求并返回适当的HTTP响应。
ob娱乐下载Symfony2遵循这一理念和为您提供工具和惯例来组织您的应用程序,因为它生长在用户和复杂性。
实际上,你可以替换ob娱乐下载
与任何其他名字打招呼。创建页面,按照简单的两步过程。
请注意
本教程假设您已经下载了Symfony2和配置您的网络服务器。ob娱乐下载假设上面的URL本地主机
指出网络
你的新目录Symfony2项目。ob娱乐下载这一过程的详细信息,请参阅文档在web服务器上使用。欧宝官网下载app这是相关文档页面你可能会使用一些web服欧宝官网下载app务器:
- Apache HTTP服务器,请参考Apache的DirectoryIndex文档欧宝官网下载app
- Nginx,请参考Nginx HttpCoreModule位置的文档欧宝官网下载app
包就像一个插件,除了所有的代码在您的应用程序将会生活在一个包。
一捆只不过是一个目录,所有有关一个特定的功能,包括PHP类、配置、甚至样式表和Javascript文件(见创建页面Symfony2ob娱乐下载)。
创建一个包AcmeHelloBundle
(一个游戏包,您将构建在本章),运行以下命令,按照屏幕上的指令(使用所有默认选项):
1
php应用程序/控制台生成:美元包——名称空间= = yml Acme / HelloBundle——格式
在幕后,为包创建一个目录src / Acme / HelloBundle
。一条线也自动添加到app / AppKernel.php
与内核文件,这样包注册:
1 2 3 4 5 6 7 8 9 10 11
/ / app / AppKernel.php公共函数registerBundles(){美元包=数组(…新Acme \ HelloBundle \ AcmeHelloBundle ());/ /……返回美元包;}
现在,您已经有了一个包的设置,您可以开始构建您的应用程序内部的包。
应用程序/配置/ routing.yml。像所有配置Symfony2之外,您还可以选择使用XMob娱乐下载L或PHP的配置路线。
如果你看看主要的路由文件,您将看到Symfony已经生成时添加一个条目ob娱乐下载AcmeHelloBundle
:
- YAML
- XML
- PHP
1 2 3 4
# app / config / routing.ymlacme_hello:资源:“@AcmeHelloBundle /资源/ config / routing.yml”前缀:/
这个条目是最基本的:它告诉Symfony的负载路由配置ob娱乐下载资源/ config / routing.yml
文件内的生活AcmeHelloBundle
。这意味着您直接路由配置应用程序/配置/ routing.yml
在您的应用程序或组织你的路线,从这里导入它们。
现在routing.yml
从包被进口文件,添加新的路线,定义了页面的URL,您将要创建:
- YAML
- XML
- PHP
1 2 3 4
# src / Acme / HelloBundle /资源/ config / routing.yml你好:模式:/ hello /{名称}默认值:{_controller:AcmeHelloBundle:你好:索引}
路由由两个基本部分组成:模式
,这条路线将匹配的URL,以及违约
数组,它指定控制器应该执行。的占位符语法模式({名称}
)是一个通配符。这意味着瑞安/ hello /
,/ hello /法比安
或任何其他类似的URL来搭配这条路线。的{名称}
占位符参数也将传递给控制器,以便您可以亲自问候用户使用它的价值。
请注意
路由系统有更多的功能在应用程序中创建灵活且强大的URL结构。更多细节,请参阅本章路由。
瑞安/ hello /应用程序处理的,你好
路线是匹配AcmeHelloBundle:你好:索引
控制器执行的框架。页面创建过程的第二步是创建控制器。
控制器- - - - - -AcmeHelloBundle:你好:索引
是逻辑控制器的名称,它映射到indexAction
一个PHP类的方法调用Acme \ HelloBundle \ \ HelloController控制器
。在你开始创建该文件AcmeHelloBundle
:
1 2 3 4 5 6
/ / src / Acme / HelloBundle /控制器/ HelloController.php名称空间Acme\HelloBundle\控制器;类HelloController{}
在现实中,控制器只不过是一个PHP方法创建和Symfony执行。ob娱乐下载这就是你的代码使用信息从请求建立和准备被请求的资源。除了在一些先进的情况下,最终产品的控制器总是相同的:Symfony2ob娱乐下载响应
对象。
创建indexAction
Symfony将执行方法ob娱乐下载时你好
路线是匹配:
1 2 3 4 5 6 7 8 9 10 11 12
/ / src / Acme / HelloBundle /控制器/ HelloController.php名称空间Acme\HelloBundle\控制器;使用ob娱乐下载\组件\HttpFoundation\响应;类HelloController{公共函数indexAction(美元的名字){返回新响应(“< html > <身体>你好”。美元的名字。”! < /身体> < / html > ');}}
控制器是简单的:它创建一个新的响应
对象,它的第一个参数是应该用于响应的内容(一个小的HTML页面在这个例子)。
恭喜你!创建只有一个路由和一个控制器后,你已经有了一个全功能页面!如果你一切都已正确设置,应用程序应该问候你:
1
http://localhost/app_dev.php/hello/Ryan
提示
您还可以查看应用程序的“刺激”环境通过访问:
1
http://localhost/app.php/hello/Ryan
如果你得到一个错误,很有可能因为你需要清理缓存通过运行:
1
美元php应用程序/控制台缓存:明确——env =刺激——没有调试
一个可选的,但常见的,在这个过程中第三步是创建一个模板。
请注意
控制器的主要入口点代码并创建页面时的一个重要因素。可以找到更多的信息控制器章。
的呈现()
方法创建一个响应
对象填充的内容,呈现模板。像任何其他控制器,你最终将返回响应
对象。
请注意,有两个不同的例子呈现模板。默认情况下,Symfonob娱乐下载y2支持两种不同的模板语言:典型的PHP模板和简洁而又强大的嫩枝模板。别慌,你自由选择,甚至在同一个项目。
控制器呈现AcmeHelloBundle:你好:index.html.twig
模板,使用以下命名约定:
BundleName:ControllerName:TemplateName
这是逻辑模板的名称,这是映射到物理位置使用以下约定。
/ / BundleName /路径/ /资源/视图ControllerName/TemplateName
在这种情况下,AcmeHelloBundle
是包名,你好
是控制器,index.html.twig
模板:
- 嫩枝
- PHP
1 2 3 4 5 6
{# src / Acme / HelloBundle /资源/视图/ Hello / index . html。树枝#}{%扩展“::base.html。嫩枝' %}{%块身体%}你好{{名称}}!{%endblock%}
通过树枝模板逐行步:
- 第2行:
扩展
标记定义了一个父模板。模板内显式定义一个布局文件将被放置。
- 4号线:
块
令牌说,里面的东西都应该放置在一块身体
。如您所见,这是父母的责任模板(base.html.twig
)最终呈现阻止身体
。
父模板,::base.html.twig
是失踪了BundleName和ControllerName部分的名称(因此双冒号(::
)一开始)。这意味着模板包和外的生活应用程序
目录:
- 嫩枝
- PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14
{# app /资源/视图/ base.html。树枝#}< ! DOCTYPEhtml><html><头><元http-equiv=“内容类型”内容=“text / html;charset = utf - 8”/ ><标题>{%块标题%}欢迎光临!{%endblock%}< /标题>{%块样式表%}{%endblock%}<链接rel=“快捷方式图标”href=”{{资产(ico的位于)}}”/ >< /头><身体>{%块身体%}{%endblock%}{%块javascripts %}{%endblock%}< /身体>< /html>
基本模板文件定义的HTML布局和呈现身体
块中定义的index.html.twig
模板。它还显示一个标题
块,你可以选择来定义的index.html.twig
模板。因为你没有定义标题
块在子模板,它默认为“欢迎!”。
模板是一种强大的方法来呈现页面的内容和组织。一个模板可以使任何东西,从HTML标记、CSS代码,或其他控制器可能需要返回的东西。
在处理一个请求的生命周期,模板引擎是一个可选的工具。记得,每个控制器返回的目标响应
对象。模板是一个强大的,但是可选的,工具创建的内容响应
对象。
响应
对象返回给用户。ob娱乐下载
与任何其他名字打招呼。创建页面,按照简单的两步过程。请注意
本教程假设您已经下载了Symfony2和配置您的网络服务器。ob娱乐下载假设上面的URL本地主机
指出网络
你的新目录Symfony2项目。ob娱乐下载这一过程的详细信息,请参阅文档在web服务器上使用。欧宝官网下载app这是相关文档页面你可能会使用一些web服欧宝官网下载app务器:
- Apache HTTP服务器,请参考Apache的DirectoryIndex文档欧宝官网下载app
- Nginx,请参考Nginx HttpCoreModule位置的文档欧宝官网下载app
包就像一个插件,除了所有的代码在您的应用程序将会生活在一个包。
一捆只不过是一个目录,所有有关一个特定的功能,包括PHP类、配置、甚至样式表和Javascript文件(见创建页面Symfony2ob娱乐下载)。
创建一个包AcmeHelloBundle
(一个游戏包,您将构建在本章),运行以下命令,按照屏幕上的指令(使用所有默认选项):
1
php应用程序/控制台生成:美元包——名称空间= = yml Acme / HelloBundle——格式
在幕后,为包创建一个目录src / Acme / HelloBundle
。一条线也自动添加到app / AppKernel.php
与内核文件,这样包注册:
1 2 3 4 5 6 7 8 9 10 11
/ / app / AppKernel.php公共函数registerBundles(){美元包=数组(…新Acme \ HelloBundle \ AcmeHelloBundle ());/ /……返回美元包;}
现在,您已经有了一个包的设置,您可以开始构建您的应用程序内部的包。
应用程序/配置/ routing.yml。像所有配置Symfony2之外,您还可以选择使用XMob娱乐下载L或PHP的配置路线。
如果你看看主要的路由文件,您将看到Symfony已经生成时添加一个条目ob娱乐下载AcmeHelloBundle
:
- YAML
- XML
- PHP
1 2 3 4
# app / config / routing.ymlacme_hello:资源:“@AcmeHelloBundle /资源/ config / routing.yml”前缀:/
这个条目是最基本的:它告诉Symfony的负载路由配置ob娱乐下载资源/ config / routing.yml
文件内的生活AcmeHelloBundle
。这意味着您直接路由配置应用程序/配置/ routing.yml
在您的应用程序或组织你的路线,从这里导入它们。
现在routing.yml
从包被进口文件,添加新的路线,定义了页面的URL,您将要创建:
- YAML
- XML
- PHP
1 2 3 4
# src / Acme / HelloBundle /资源/ config / routing.yml你好:模式:/ hello /{名称}默认值:{_controller:AcmeHelloBundle:你好:索引}
路由由两个基本部分组成:模式
,这条路线将匹配的URL,以及违约
数组,它指定控制器应该执行。的占位符语法模式({名称}
)是一个通配符。这意味着瑞安/ hello /
,/ hello /法比安
或任何其他类似的URL来搭配这条路线。的{名称}
占位符参数也将传递给控制器,以便您可以亲自问候用户使用它的价值。
请注意
路由系统有更多的功能在应用程序中创建灵活且强大的URL结构。更多细节,请参阅本章路由。
AcmeHelloBundle
:- YAML
- XML
- PHP
1 2 3 4
# app / config / routing.ymlacme_hello:资源:“@AcmeHelloBundle /资源/ config / routing.yml”前缀:/
资源/ config / routing.yml
文件内的生活AcmeHelloBundle
。这意味着您直接路由配置应用程序/配置/ routing.yml
在您的应用程序或组织你的路线,从这里导入它们。routing.yml
从包被进口文件,添加新的路线,定义了页面的URL,您将要创建:- YAML
- XML
- PHP
1 2 3 4
# src / Acme / HelloBundle /资源/ config / routing.yml你好:模式:/ hello /{名称}默认值:{_controller:AcmeHelloBundle:你好:索引}
模式
,这条路线将匹配的URL,以及违约
数组,它指定控制器应该执行。的占位符语法模式({名称}
)是一个通配符。这意味着瑞安/ hello /
,/ hello /法比安
或任何其他类似的URL来搭配这条路线。的{名称}
占位符参数也将传递给控制器,以便您可以亲自问候用户使用它的价值。请注意
路由系统有更多的功能在应用程序中创建灵活且强大的URL结构。更多细节,请参阅本章路由。
瑞安/ hello /应用程序处理的,你好
路线是匹配AcmeHelloBundle:你好:索引
控制器执行的框架。页面创建过程的第二步是创建控制器。
控制器- - - - - -AcmeHelloBundle:你好:索引
是逻辑控制器的名称,它映射到indexAction
一个PHP类的方法调用Acme \ HelloBundle \ \ HelloController控制器
。在你开始创建该文件AcmeHelloBundle
:
1 2 3 4 5 6
/ / src / Acme / HelloBundle /控制器/ HelloController.php名称空间Acme\HelloBundle\控制器;类HelloController{}
在现实中,控制器只不过是一个PHP方法创建和Symfony执行。ob娱乐下载这就是你的代码使用信息从请求建立和准备被请求的资源。除了在一些先进的情况下,最终产品的控制器总是相同的:Symfony2ob娱乐下载响应
对象。
创建indexAction
Symfony将执行方法ob娱乐下载时你好
路线是匹配:
1 2 3 4 5 6 7 8 9 10 11 12
/ / src / Acme / HelloBundle /控制器/ HelloController.php名称空间Acme\HelloBundle\控制器;使用ob娱乐下载\组件\HttpFoundation\响应;类HelloController{公共函数indexAction(美元的名字){返回新响应(“< html > <身体>你好”。美元的名字。”! < /身体> < / html > ');}}
控制器是简单的:它创建一个新的响应
对象,它的第一个参数是应该用于响应的内容(一个小的HTML页面在这个例子)。
恭喜你!创建只有一个路由和一个控制器后,你已经有了一个全功能页面!如果你一切都已正确设置,应用程序应该问候你:
1
http://localhost/app_dev.php/hello/Ryan
提示
您还可以查看应用程序的“刺激”环境通过访问:
1
http://localhost/app.php/hello/Ryan
如果你得到一个错误,很有可能因为你需要清理缓存通过运行:
1
美元php应用程序/控制台缓存:明确——env =刺激——没有调试
一个可选的,但常见的,在这个过程中第三步是创建一个模板。
请注意
控制器的主要入口点代码并创建页面时的一个重要因素。可以找到更多的信息控制器章。
AcmeHelloBundle:你好:索引
是逻辑控制器的名称,它映射到indexAction
一个PHP类的方法调用Acme \ HelloBundle \ \ HelloController控制器
。在你开始创建该文件AcmeHelloBundle
:1 2 3 4 5 6
/ / src / Acme / HelloBundle /控制器/ HelloController.php名称空间Acme\HelloBundle\控制器;类HelloController{}
响应
对象。indexAction
Symfony将执行方法ob娱乐下载时你好
路线是匹配:1 2 3 4 5 6 7 8 9 10 11 12
/ / src / Acme / HelloBundle /控制器/ HelloController.php名称空间Acme\HelloBundle\控制器;使用ob娱乐下载\组件\HttpFoundation\响应;类HelloController{公共函数indexAction(美元的名字){返回新响应(“< html > <身体>你好”。美元的名字。”! < /身体> < / html > ');}}
响应
对象,它的第一个参数是应该用于响应的内容(一个小的HTML页面在这个例子)。1
http://localhost/app_dev.php/hello/Ryan
提示
您还可以查看应用程序的“刺激”环境通过访问:
1
http://localhost/app.php/hello/Ryan
如果你得到一个错误,很有可能因为你需要清理缓存通过运行:
1
美元php应用程序/控制台缓存:明确——env =刺激——没有调试
请注意
控制器的主要入口点代码并创建页面时的一个重要因素。可以找到更多的信息控制器章。
呈现()
方法创建一个响应
对象填充的内容,呈现模板。像任何其他控制器,你最终将返回响应
对象。AcmeHelloBundle:你好:index.html.twig
模板,使用以下命名约定:BundleName:ControllerName:TemplateName
/ / BundleName /路径/ /资源/视图ControllerName/TemplateName
AcmeHelloBundle
是包名,你好
是控制器,index.html.twig
模板:- 嫩枝
- PHP
1 2 3 4 5 6
{# src / Acme / HelloBundle /资源/视图/ Hello / index . html。树枝#}{%扩展“::base.html。嫩枝' %}{%块身体%}你好{{名称}}!{%endblock%}
扩展
标记定义了一个父模板。模板内显式定义一个布局文件将被放置。块
令牌说,里面的东西都应该放置在一块身体
。如您所见,这是父母的责任模板(base.html.twig
)最终呈现阻止身体
。::base.html.twig
是失踪了BundleName和ControllerName部分的名称(因此双冒号(::
)一开始)。这意味着模板包和外的生活应用程序
目录:- 嫩枝
- PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14
{# app /资源/视图/ base.html。树枝#}< ! DOCTYPEhtml><html><头><元http-equiv=“内容类型”内容=“text / html;charset = utf - 8”/ ><标题>{%块标题%}欢迎光临!{%endblock%}< /标题>{%块样式表%}{%endblock%}<链接rel=“快捷方式图标”href=”{{资产(ico的位于)}}”/ >< /头><身体>{%块身体%}{%endblock%}{%块javascripts %}{%endblock%}< /身体>< /html>
身体
块中定义的index.html.twig
模板。它还显示一个标题
块,你可以选择来定义的index.html.twig
模板。因为你没有定义标题
块在子模板,它默认为“欢迎!”。响应
对象。模板是一个强大的,但是可选的,工具创建的内容响应
对象。应用程序有相同的基本的和推荐的目录结构:
app /
:这个目录包含应用程序配置;
src /
:所有项目的PHP代码存储在该目录;
供应商/
:任何供应商库放置在这里按照惯例;
web /
:这是web根目录和包含任何公开的文件;
前端控制器生命:
1 2 3 4 5 6 7 8 9
/ /网络/ app.phprequire_once__DIR__。“/ . . / app / bootstrap.php.cache”;require_once__DIR__。“/ . . / app / AppKernel.php”;使用ob娱乐下载\组件\HttpFoundation\请求;美元内核=新AppKernel (“刺激”,假);美元内核- >loadClassCache ();美元内核- >处理请求(::createFromGlobals ())- >send ();
前端控制器文件(app.php
在这个例子中)是实际执行的PHP文件在使用Symfony2应用程序及其工作是使用一个内核类,ob娱乐下载AppKernel
启动应用程序。
提示
前端控制器意味着不同的和更灵活的url中使用一个典型的平坦的PHP应用程序。当使用一个前端控制器、url格式在以下方式:
1
http://localhost/app.php/hello/Ryan
前端控制器,app.php
、执行和“内部:“URL瑞安/ hello /
内部路由使用路由配置。通过使用Apachemod_rewrite
规则,你可以力app.php
文件,而不需要执行指定的URL:
1
http://localhost/hello/Ryan
虽然在处理每个请求前端控制器是必不可少的,你很少需要修改甚至思考。他们会再次提到了短暂的环境部分。
应用程序)目录
正如您在前面看到控制器,AppKernel
类是应用程序的主要入口点,负责所有配置。因此,它是存储在app /
目录中。
这个类必须实现两个方法定义Symfony的一切需要知道您的应用程序。ob娱乐下载你甚至不需要担心这些方法在开始——Symfony让他们为你合理的默认值。ob娱乐下载
registerBundles ()
:返回一个数组的运行应用程序所需的所有包(见创建页面Symfony2ob娱乐下载);
registerContainerConfiguration ()
:加载资源文件(参见主应用程序配置应用程序配置部分)。
在日常开发中,您将主要使用app /
和路由文件目录修改配置应用程序/配置/
目录(见应用程序配置)。它还包含应用程序缓存目录(app /缓存
),日志目录(app /日志
)和应用程序级别的资源文件的目录,如模板(app /资源
)。你会了解更多关于这些目录在以后的章节。
app /
:这个目录包含应用程序配置;src /
:所有项目的PHP代码存储在该目录;供应商/
:任何供应商库放置在这里按照惯例;web /
:这是web根目录和包含任何公开的文件;前端控制器生命:
1 2 3 4 5 6 7 8 9
/ /网络/ app.phprequire_once__DIR__。“/ . . / app / bootstrap.php.cache”;require_once__DIR__。“/ . . / app / AppKernel.php”;使用ob娱乐下载\组件\HttpFoundation\请求;美元内核=新AppKernel (“刺激”,假);美元内核- >loadClassCache ();美元内核- >处理请求(::createFromGlobals ())- >send ();
1 2 3 4 5 6 7 8 9
/ /网络/ app.phprequire_once__DIR__。“/ . . / app / bootstrap.php.cache”;require_once__DIR__。“/ . . / app / AppKernel.php”;使用ob娱乐下载\组件\HttpFoundation\请求;美元内核=新AppKernel (“刺激”,假);美元内核- >loadClassCache ();美元内核- >处理请求(::createFromGlobals ())- >send ();
前端控制器文件(app.php
在这个例子中)是实际执行的PHP文件在使用Symfony2应用程序及其工作是使用一个内核类,ob娱乐下载AppKernel
启动应用程序。
提示
前端控制器意味着不同的和更灵活的url中使用一个典型的平坦的PHP应用程序。当使用一个前端控制器、url格式在以下方式:
1
http://localhost/app.php/hello/Ryan
前端控制器,app.php
、执行和“内部:“URL瑞安/ hello /
内部路由使用路由配置。通过使用Apachemod_rewrite
规则,你可以力app.php
文件,而不需要执行指定的URL:
1
http://localhost/hello/Ryan
虽然在处理每个请求前端控制器是必不可少的,你很少需要修改甚至思考。他们会再次提到了短暂的环境部分。
应用程序)目录
正如您在前面看到控制器,AppKernel
类是应用程序的主要入口点,负责所有配置。因此,它是存储在app /
目录中。
这个类必须实现两个方法定义Symfony的一切需要知道您的应用程序。ob娱乐下载你甚至不需要担心这些方法在开始——Symfony让他们为你合理的默认值。ob娱乐下载
registerBundles ()
:返回一个数组的运行应用程序所需的所有包(见创建页面Symfony2ob娱乐下载);registerContainerConfiguration ()
:加载资源文件(参见主应用程序配置应用程序配置部分)。
在日常开发中,您将主要使用app /
和路由文件目录修改配置应用程序/配置/
目录(见应用程序配置)。它还包含应用程序缓存目录(app /缓存
),日志目录(app /日志
)和应用程序级别的资源文件的目录,如模板(app /资源
)。你会了解更多关于这些目录在以后的章节。
第三方包或分发自己的包。使它容易挑选这档节目的特点就是在应用程序中启用和你所希望的方式来优化它们。
请注意
当你将学习基础知识,整个食谱条目的组织和最佳实践包。
请注意
当你将学习基础知识,整个食谱条目的组织和最佳实践包。
包只是一套结构化的文件在一个目录中,实现一个功能。您可以创建一个BlogBundle
,一个ForumBundle
或一组用户管理(这些已经存在的开源包)。每个目录包含所有相关的功能,包括PHP文件、模板、样式表,javascript,测试和其他东西。功能的方方面面存在于一个包,住在每个特性包。
一个应用程序包中定义的组成registerBundles ()
的方法AppKernel
类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日24
/ / app / AppKernel.php公共函数registerBundles(){美元包=数组(新ob娱乐下载Symfony \包\ FrameworkBundle \ FrameworkBundle (),新ob娱乐下载Symfony \包\ SecurityBundle \ SecurityBundle (),新ob娱乐下载Symfony \包\ TwigBundle \ TwigBundle (),新ob娱乐下载Symfony \包\ MonologBundle \ MonologBundle (),新ob娱乐下载Symfony \包\ SwiftmailerBundle \ SwiftmailerBundle (),新ob娱乐下载Symfony \包\ DoctrineBundle \ DoctrineBundle (),新ob娱乐下载Symfony \包\ AsseticBundle \ AsseticBundle (),新Sensio赞助\包\ FrameworkExtraBundle \ SensioFrameworkExtraBundle (),新JMS \ SecurityExtraBundle \ JMSSecurityExtraBundle ());如果(in_array (美元这- >getEnvironment (),数组(“开发”,“测试”))){美元包[]=新Acme \ DemoBundle \ AcmeDemoBundle ();美元包[]=新ob娱乐下载Symfony \包\ WebProfilerBundle \ WebProfilerBundle ();美元包[]=新Sensio赞助\包\ DistributionBundle \ SensioDistributionBundle ();美元包[]=新Sensio赞助\包\ GeneratorBundle \ SensioGeneratorBundle ();}返回美元包;}
与registerBundles ()
方法,你有完全控制哪些包所使用的应用程序(包括核心Symfony包)。ob娱乐下载
提示
一捆可以活在任何地方只要它可以自动装载(通过自动装卸机配置app / autoload.php
)。
AcmeTestBundle并启用它。
提示
的Acme
部分只是一个虚拟的名字应该被一些“供应商”的名字,代表了你或你的组织(如。ABCTestBundle
对于一些公司命名美国广播公司
)。
首先创建一个src / Acme / TestBundle /
目录,添加一个新文件AcmeTestBundle.php
:
1 2 3 4 5 6 7 8
/ / src / Acme / TestBundle / AcmeTestBundle.php名称空间Acme\TestBundle;使用ob娱乐下载\组件\HttpKernel\包\包;类AcmeTestBundle扩展包{}
提示
这个名字AcmeTestBundle
遵守标准包的命名约定。你也可以选择缩短包简单的名称TestBundle
通过命名这类TestBundle
(和命名的文件TestBundle.php
)。
这块空类是唯一你需要创建新的包。尽管通常空的,这类是强大的,可以用来定制包的行为。
现在您已经创建了包,使其通过AppKernel
类:
1 2 3 4 5 6 7 8 9 10 11 12
/ / app / AppKernel.php公共函数registerBundles(){美元包=数组(…/ /注册你的包新Acme \ TestBundle \ AcmeTestBundle ());/ /……返回美元包;}
虽然它不做任何事情,AcmeTestBundle
现在已经准备好被使用。
像这是那么容易,Symfony还提供了一个命令行ob娱乐下载界面生成一个基本的束骨架:
1
php应用程序/控制台生成:美元= Acme / TestBundle包——名称空间
束骨架生成基本控制器,可以定制模板和路由资源。稍后您将了解更多关于Symfony2的命令行工具ob娱乐下载。
提示
每当创建一个新包或使用第三方包,总是确保包已启用registerBundles ()
。当使用生成:包
命令,这样做是为了你。
提示
的Acme
部分只是一个虚拟的名字应该被一些“供应商”的名字,代表了你或你的组织(如。ABCTestBundle
对于一些公司命名美国广播公司
)。
src / Acme / TestBundle /
目录,添加一个新文件AcmeTestBundle.php
:1 2 3 4 5 6 7 8
/ / src / Acme / TestBundle / AcmeTestBundle.php名称空间Acme\TestBundle;使用ob娱乐下载\组件\HttpKernel\包\包;类AcmeTestBundle扩展包{}
提示
这个名字AcmeTestBundle
遵守标准包的命名约定。你也可以选择缩短包简单的名称TestBundle
通过命名这类TestBundle
(和命名的文件TestBundle.php
)。
AppKernel
类:1 2 3 4 5 6 7 8 9 10 11 12
/ / app / AppKernel.php公共函数registerBundles(){美元包=数组(…/ /注册你的包新Acme \ TestBundle \ AcmeTestBundle ());/ /……返回美元包;}
AcmeTestBundle
现在已经准备好被使用。1
php应用程序/控制台生成:美元= Acme / TestBundle包——名称空间
提示
每当创建一个新包或使用第三方包,总是确保包已启用registerBundles ()
。当使用生成:包
命令,这样做是为了你。
应用程序/配置/目录和被称为config.yml
,config . xml
或config。
根据你喜欢的格式:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
# app / config / config.yml进口:- - - - - -{资源:parameters.yml}- - - - - -{资源:security.yml}框架:秘密:“% %”秘密路由器:{资源:“% kernel.root_dir % / config / routing.yml”}#……#树枝配置枝:调试:“% kernel.debug %”strict_variables:“% kernel.debug %”#……
请注意
您将学习如何加载每个文件/格式在下一节环境。
每个顶级条目如框架
或嫩枝
定义了一个特定的配置包。例如,框架
主要定义了核心Symfony的配置ob娱乐下载FrameworkBundle
,包括配置路由、模板和其他核心系统。
现在,不要担心每个部分的具体配置选项。配置文件附带的默认值。当你阅读更多和探索Symfony2的每个部分,您将了解每个特性的具体配置选项。ob娱乐下载
你可以转储的默认配置yaml控制台使用的包配置:dump-reference
命令。这里有一个例子倾销默认FrameworkBundle配置:
1
应用程序/控制台配置:dump-reference FrameworkBundle
扩展别名(配置键)也可以使用:
1
应用程序/控制台配置:dump-reference框架
请注意
看到食谱文章:如何使语义配置包吗信息添加配置自己的包。
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
# app / config / config.yml进口:- - - - - -{资源:parameters.yml}- - - - - -{资源:security.yml}框架:秘密:“% %”秘密路由器:{资源:“% kernel.root_dir % / config / routing.yml”}#……#树枝配置枝:调试:“% kernel.debug %”strict_variables:“% kernel.debug %”#……
请注意
您将学习如何加载每个文件/格式在下一节环境。
框架
或嫩枝
定义了一个特定的配置包。例如,框架
主要定义了核心Symfony的配置ob娱乐下载FrameworkBundle
,包括配置路由、模板和其他核心系统。配置:dump-reference
命令。这里有一个例子倾销默认FrameworkBundle配置:1
应用程序/控制台配置:dump-reference FrameworkBundle
1
应用程序/控制台配置:dump-reference框架
请注意
看到食谱文章:如何使语义配置包吗信息添加配置自己的包。
dev环境将日志警告和错误,而刺激
环境只会记录错误。有些文件在每个请求重建dev
环境(为开发人员提供便利的),但缓存中刺激
环境。所有环境共同生活在同一台机器上,执行相同的应用程序。
Syob娱乐下载mfony2项目通常始于三个环境(dev
,测试
和刺激
创建新环境),尽管是很容易的。您可以查看您的应用程序在不同的环境中通过改变前端控制器在您的浏览器中。看到的应用程序dev
环境中,通过访问该应用程序开发前端控制器:
1
http://localhost/app_dev.php/hello/Ryan
如果你想看看你的应用程序在生产环境中,调用刺激
前端控制器:
1
http://localhost/app.php/hello/Ryan
自刺激
环境优化速度;配置,路由和树枝模板编译成平坦的PHP类和缓存。当查看变化刺激
环境中,您需要明确这些缓存文件,允许他们重建:
1
美元php应用程序/控制台缓存:明确——env =刺激——没有调试
请注意
如果你打开web / app.php
配置文件,你会发现它的显式地使用刺激
环境:
1
美元内核=新AppKernel (“刺激”,假);
您可以创建一个新的前端控制器新环境通过复制这个文件和改变刺激
其他一些价值。
请注意
的测试
运行时环境使用自动化测试,不能直接通过浏览器访问。看到章测试为更多的细节。
dev
,测试
和刺激
创建新环境),尽管是很容易的。您可以查看您的应用程序在不同的环境中通过改变前端控制器在您的浏览器中。看到的应用程序dev
环境中,通过访问该应用程序开发前端控制器:1
http://localhost/app_dev.php/hello/Ryan
刺激
前端控制器:1
http://localhost/app.php/hello/Ryan
刺激
环境优化速度;配置,路由和树枝模板编译成平坦的PHP类和缓存。当查看变化刺激
环境中,您需要明确这些缓存文件,允许他们重建:1
美元php应用程序/控制台缓存:明确——env =刺激——没有调试
请注意
如果你打开web / app.php
配置文件,你会发现它的显式地使用刺激
环境:
1
美元内核=新AppKernel (“刺激”,假);
您可以创建一个新的前端控制器新环境通过复制这个文件和改变刺激
其他一些价值。
请注意
的测试
运行时环境使用自动化测试,不能直接通过浏览器访问。看到章测试为更多的细节。