【发布时间】:2014-09-17 02:35:54
【问题描述】:
背景:
我正在尝试根据请求主机有条件地加载路由。我有一个数据库设置,其中包含映射到模板的主机。如果用户来自主机 A 并且使用模板 TA 我想加载该模板的路由。如果它们来自主机 B,则加载该模板的路由 (TB)。
我必须这样做的原因是因为每个模板将共享许多路由。然而,给定模板有一些独特的路线。
可以将每个模板路由限制到给定主机,但实际上有 1000 台主机。
我的尝试:
我已经尝试了一个自定义路由加载器,如此处文档中所述:
http://symfony.com/doc/current/cookbook/routing/custom_route_loader.html
但是,当我配置服务并尝试注入 "@request" 时,构造函数失败,因为 $request 为空
services:
acme_demo.routing_loader:
class: Acme\DemoBundle\Routing\ExtraLoader
arguments: ["@request"]
tags:
- { name: routing.loader }
类:
<?php
namespace: Acme\DemoBundle\Routing;
use Symfony\Component\HttpFoundation\Request;
class ExtraLoader
{
protected $request;
public function __construct(Request $request)
{
$this->request = $request;
}
// ...
}
如果我尝试将"@request" 切换为"@service_container" 然后调用,这也不起作用
$this->container->get('request');
我最接近完成这项工作的是遵循此处找到的指南:
http://marcjschmidt.de/blog/2013/11/30/symfony-custom-dynamic-router.html
我遇到的问题是我试图在控制器上使用annotation,但我似乎无法让Symfony\Component\Routing\Loader\AnnotationFileLoader 工作。
【问题讨论】:
标签: php symfony event-listener symfony-2.5