增加了对URL片段的支持 ¶
fragment identifier(片段标识符)是指一个URL中的“可选的”最末部分,它以#
符号开始,一般用来标记文档中的某一部分。这个URL元素现正激增,因为一些程序把它纳入了导航体系。因此,Symfony 3.2允许定义这个片段,当生成URL时利用全新的路由保留属性_fragment
即可:
1 2 3 4 5 6 7 | // generating a regular URL (/settings)
// 生成常规链接(/settings)
$this->get('router')->generate('user_settings');
// generating a URL with a fragment (/settings#password)
// 生成一个带有片段的链接(/settings#password)
$this->get('router')->generate('user_settings', ['_fragment' => 'password']); |
这个_fragment
选项也可以在Symfony支持的任何路由定义格式中使用:
1 2 3 4 | /**
* @Route("/settings", defaults={"_fragment" = "password"}, name="user_settings")
*/
public function settingsAction() { ... } |
增加了对XML路由的数组值的支持 ¶
在定义Symfony程序的路由时,XML不是最常用的格式。除了较为冗长之外,它也缺少一些其他格式的功能,比如使用数组来定义路由中的默认取值:
1 2 3 4 5 6 7 8 9 | <routes>
<route id="blog" path="/blog/{page}">
<default key="_controller">AppBundle:Blog:index</default>
<!-- you can't define the type of the 'page' property and you can't
use an array as the value of a '<default>' element -->
<!-- 你不能定义'page'属性的类型,也不能使用数组作为某个'<default>'元素的值 -->
<default key="page">1</default>
</route>
</routes> |
在Symfony 3.2中我们决定改进路由组件中的XmlFileLoader
类,以允许定义任何一个default
元素的变量类型:
1 2 3 4 5 6 7 8 9 10 | <routes>
<route id="blog" path="/blog/{page}">
<default key="_controller">
<string>AppBundle:Blog:index</string>
</default>
<default key="page">
<int>1</int>
</default>
</route>
</routes> |
现在你可以使用数组来作为任意default
元素的值了(对标量数组(scalar array)使用list
,而对关联数组(associative array)使用map
):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <routes>
<route id="blog" path="/blog/{page}">
<default key="_controller">
<string>AppBundle:Blog:index</string>
</default>
<default key="page">
<int>1</int>
</default>
<default key="values">
<map>
<bool key="public">true</bool>
<int key="page">1</int>
<float key="price">3.5</float>
<string key="title">foo</string>
</map>
</default>
</route>
</routes> |