感谢你来到这里
我真的很激动
盼望,能有你的支持
捐赠可扫描二维码转账支付
支付宝扫一扫付款
微信扫一扫付款
(微信为保护隐私,不显示你的昵称)
在defaults
集合内部的参数,不一定非要匹配路由path
中的某个占位符。实际上,你可以使用defaults
数组去指定额外的参数,然后它们将能够作为控制器参数被访问到,同时还成为Request
对象的属性:
1 2 3 4 5 6 7 | # app/config/routing.yml
blog:
path: /blog/{page}
defaults:
_controller: AppBundle:Blog:index
page: 1
title: "Hello world!" |
1 2 3 4 5 6 7 8 9 10 11 12 13 | <!-- app/config/routing.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<routes xmlns="http://symfony.com/schema/routing"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/routing
http://symfony.com/schema/routing/routing-1.0.xsd">
<route id="blog" path="/blog/{page}">
<default key="_controller">AppBundle:Blog:index</default>
<default key="page">1</default>
<default key="title">Hello world!</default>
</route>
</routes> |
1 2 3 4 5 6 7 8 9 10 11 12 | // app/config/routing.php
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\Route;
$collection = new RouteCollection();
$collection->add('blog', new Route('/blog/{page}', array(
'_controller' => 'AppBundle:Blog:index',
'page' => 1,
'title' => 'Hello world!',
)));
return $collection; |
现在,在控制器里你可以访问到这个额外的参数,它作为一个控制器action方法的参数传入:
1 2 3 4 | public function indexAction($page, $title)
{
// ...
} |
另外,这个title还可以通过Request
对象来访问:
1 2 3 4 5 6 7 8 | use Symfony\Component\HttpFoundation\Request;
public function indexAction(Request $request, $page)
{
$title = $request->attributes->get('title');
// ...
} |
正如你看到的,$title
变量并没有在路由器的path里被定义,但是你还是可以在控制器中访问。通过action方法的参数,或者通过Request
对象的attributes
包(可以获取)。
本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。