我有一个API包,只有当我在子域上时才会加载,这是我在AppKernel中的内容:
if ($_SERVER['HTTP_HOST'] == 'api.mywebsite.fr')
{
$bundles[] = new TV\ApiBundle\TVApiBundle();
}
现在我需要在我的软件包中的某个地方加载它自己的路由,没有必须使用我的软件包配置修改app/config/routing.yml
文件。我尝试使用自定义路由器加载器,如http://symfony.com/doc/current/cookbook/routing/custom_route_loader.html所述,但问题是教程的一部分:
AcmeDemoBundle_Extra:
resource: .
type: extra
有没有办法避免这种配置? 我希望我的捆绑包能够独立完成所有工作而无需修改app / config /.中的文件(除了AppKernel部分ofc:p)
此致
答案 0 :(得分:2)
你检查过文档的最后一部分了吗?这部分在您的自定义加载器中添加资源和类型,这样您就不必在routing.yml中执行此操作。 http://symfony.com/doc/current/cookbook/routing/custom_route_loader.html
namespace Acme\DemoBundle\Routing;
use Symfony\Component\Config\Loader\Loader;
use Symfony\Component\Routing\RouteCollection;
class AdvancedLoader extends Loader
{
public function load($resource, $type = null)
{
$collection = new RouteCollection();
$resource = '@AcmeDemoBundle/Resources/config/import_routing.yml';
$type = 'yaml';
$importedRoutes = $this->import($resource, $type);
$collection->addCollection($importedRoutes);
return $collection;
}
public function supports($resource, $type = null)
{
return $type === 'advanced_extra';
}
}