我正在尝试将“全局”参数添加到我的路由中,如下所示:
/{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。
最好的方法是什么?
答案 0 :(得分:0)
我不知道如何使用Symfony 2框架。但是您可以创建一个简单的脚本,在regex的帮助下分析您的routing.yml文件,并在每条路径上添加行“prefix:/ {foo_id}”,就在资源行之后。