新在symfoob娱乐下载ny 1.2:向一个RESTful架构(第1部分)
昨天,我犯下了第一批更改路由框架。由于这种重构,开发人员有新机会定制路由和这将允许非常酷的特性在不久的将来。
但是今天,让我们深入的symfony 1.2路由框架。ob娱乐下载
路线作为一流的对象
在symfonob娱乐下载y 1.2之前,(通过路由系统sfPatternRouting
类)作为关联数组存储它的路线。,它工作得非常好,但不允许容易定制。给开发人员自由轻松地提高路由的过程,现在的路线存储为一个数组sfRoute
对象。
这完全重构是向后兼容的,在你没有什么需要更改routing.yml
配置文件。
如果你连接你的路线和PHP代码,你现在必须通过
sfRoute
实例作为第二个参数connect ()
,preprendRoute ()
,appendRoute ()
,insertRouteBefore ()
方法:美元的路由- >连接(“foo_bar”,新sfRoute(“/ foo /:酒吧”,数组(“模块”= >“foo”,“行动”= >“酒吧”)));
路线定制
的sfRoute
构造函数接受的选项数组的最后一个参数允许定制的路线。在routing.yml
配置文件,用它来选项
主要覆盖默认值:
文章:url: / /条:id -:蛞蝓选项:{segment_separators: [/, -]}
的segment_separators
选项设置模式的字符,可以单独的每一部分。在前面的示例中,我们显式地添加- - - - - -
(dash)字符作为一个有效的分隔两个默认内置的分隔符(/
和。
)。这允许一个URL/文章/ 1-my_article_title
匹配的路线id
变量的1
和一个鼻涕虫
变量的my_article_title
。
这个选项已经在symfony 1.1中可用,但你只允许改变它在全球范围内。ob娱乐下载通过添加新的分隔符在全球范围内,你可以有可能破碎的第三方线路(如在插件中定义的)。
选项可用,旁边有两个新选项:
generate_shortest_url
:是否生成最短的URLextra_parameters_as_query_string
:是否产生额外的查询字符串参数
这些选项可以配置在全球范围内为每个本地路由或路线。默认情况下,他们将假
在factories.yml
保持与先前的symfony版本的向后兼容性。ob娱乐下载
让我们看看如何使用这些选项来定制一个路线:
文章:url: / /文章:页面参数:{模块:文章、行动:列表页:1}选项:{generate_shortest_url:真}
这条路线将生成最短的URL。所以,如果你通过页面
的1
,这是默认值页面
变量,将生成的URL/文章
:
回声url_for(“@articles ? page = 1”);/ /生成/文章/ /会/文章/ symfony 1.1中1ob娱乐下载回声url_for(“@articles ? page = 2”);/ /生成/文章/ 2
我们来看另一个例子来说明extra_parameters_as_query_string
用法:
文章:url: /文章选择:{extra_parameters_as_query_string:真}
这条路线将接受额外的参数不是有效的变量为路线,并将它们添加一个查询字符串:
回声url_for(“@articles ? page = 1”);/ /生成/文章?页面= 1/ / symfony 1.1中没有匹配的路线ob娱乐下载回声url_for(“@articles ? page = 2”);/ /生成/文章? = 2页
这个选项可以改变匹配路由根据您的配置,使它小心如果你正在升级一个已存在的项目。但随着测试浏览器使用路由过程,你只需要将发起功能测试套件检查如果它破坏了一些东西。
路由定制
所有的逻辑sfPatternRouting
已经搬到路由类sfRoute
对象:
- 一个HTTP请求时,路由对象问每个路线反过来如果匹配的URL。
- 当你想生成一个URL,路由对象问每个路线反过来如果它能够为给定的参数生成一个URL。
开始所有的逻辑路线类中,它只是一个类来创建一个新的路线的改变解析或生成过程的行为。
如果你想改变路线,使用的默认路由类添加一个类
你的路线的关键配置是这样的:
文章:url: / /条id参数:{模块:文章中,行动:指数}类:myRoute
这个路由配置,symfony将使用ob娱乐下载myRoute
类的文章
路线,而不是内置的sfRoute
类。现在由你来覆盖默认行为。
的
sfRoute
类是比旧的更模块化sfPatternRouting
类,以便更容易的定制默认的行为。“编译”阶段被重构为更小的方法,代码已经被简化了,现在是基于一个“真正的”记号赋予器。
内置的sfRequestRoute
ob娱乐下载Symfony还有一个内置的路线,sfRequestRoute
,它可以执行HTTP方法在匹配过程中:
文章:url: / /条id要求:{sf_method:}类:sfRequestRoute
与前面的路由配置的文章
与路由只会匹配请求得到
HTTP方法。
如果您定义几个相同的路线url
但不同的方法的需求,你可以通过sf_method
作为一个参数时生成一个路线:
< ? php回声link_to(“大文章”,“@article ? id = 1 &sf_method =得到”))? >
这是有可能的,因为请求的路由现在意识到上下文。当请求调用路由,它通过以下背景:
方法
:HTTP方法格式
:请求的格式主机
:主机名is_secure
:是否与HTTPS请求被称为request_uri
:完整的请求URI前缀
:前缀添加到每个生成的路线
的sfRequestRoute
第一步是一个RESTful架构。
接下来是什么?
在接下来的部分中,我们将看到symfony如何管理资源自动生成基于rob娱乐下载est的路线基于一个简单的配置routing.yml
。我们还将学习如何把代码写在你的行动,由于内置一体化的推动和教义。
最后但并非最不重要,我将谈论新的路由框架ob娱乐下载symfonyCamp更多的例子和现场演示。所以,如果你想了解更多关于symfony 1.2,如果你没有注册,你仍然ob娱乐下载可以加入60人谁会分享他们的symfony的经验。ob娱乐下载
如果你想遵循symfony的进步1.2或如果你想知道的所有更改我们symfoob娱乐下载ny 1.2,你可以定期检查升级到symfony ob娱乐下载1.2页面,实时记录和新闻特性的所有更改。欧宝平台是合法的吗
评论
评论都关门了。
以确保评论保持相关,他们关闭了旧的帖子。
做得好:)
法比安,你谈论Symfony 1.2论坛PHP巴黎12ob娱乐下载月?