Symfony中的全局URL参数

时间:2015-11-21 11:08:06

标签: php symfony routing

我正在尝试将“全局”参数添加到我的路由中,如下所示:

/{foo_id}/controller/{another_id}/action

所以有一个Foo对象,它有id foo_id,所有控制器都在所有请求中使用(主页除外)

我试图通过简单地为每条路线添加一个foo_id参数来实现这一点。但是我必须添加用于将正确的foo加载到项目中的每个控制器的代码,然后我必须确保用户也可以访问每个控制器中的Foo。我找到了another similar question,所以我将路由更改为以下内容:

foo:
    resource: "@AppBundle/Resources/config/routing-foo.yml"
    prefix: /{foo_id}
    requirements:
        foo_id: \d+

我添加了一个由所有其他控制器继承的新控制器:

class BaseFooController extends Controller
{
    protected $foo;
    public function __construct()
    {
        $request = Request::createFromGlobals();
        $foo_id = $request->attributes->getInt('foo_id');
        // ... set $this->foo ...
    }
}

我的意思是我只能在所有其他控制器中使用$ this-> foo来访问Foo对象。我也可以在这个控制器中添加访问控制。但此时似乎无法访问foo_id。

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

我不知道如何使用Symfony 2框架。但是您可以创建一个简单的脚本,在regex的帮助下分析您的routing.yml文件,并在每条路径上添加行“prefix:/ {foo_id}”,就在资源行之后。