如何正确覆盖默认路由器?

时间:2012-12-16 13:03:39

标签: symfony

所以我做了一个扩展Symfony\Bundle\FrameworkBundle\Routing\Router的课程 并使用router.class: My\Bundle\Router\Class在配置中定义为我的默认值,但现在每当我更改路径模式或名称这么简单的东西时,我得到......

  

致命错误:在第312行的/.../app/cache/dev/classes.php中的非对象上调用成员函数get()

在该行中有:

$this->collection = $this->container->get('routing.loader')->load($this->resource, $this->options['resource_type']);

我错过了什么?

1 个答案:

答案 0 :(得分:2)

$this->containerRouter课程中是私有的。您无法直接访问它。

你需要让它易于理解:

/**
 * Router 
 */
class Router extends BaseRouter
{
    protected $container;

    /**
     * Constructor.
     *
     * @param ContainerInterface $container A ContainerInterface instance
     * @param mixed              $resource  The main resource to load
     * @param array              $options   An array of options
     * @param RequestContext     $context   The context
     * @param array              $defaults  The default values
     */
    public function __construct(ContainerInterface $container, $resource, array $options = array(), RequestContext $context = null, array $defaults = array())
    {
        $this->container = $container;

        parent::__construct($container, $resource, $options, $context, $defaults);
    }
}