背景:
我正在尝试根据请求主机有条件地加载路由。我有一个数据库设置,其中包含映射到模板的主机。如果用户来自主机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
正常工作。