【问题标题】:how to overwrite symfony2 core FrameworkBundle?如何覆盖 symfony2 核心 FrameworkBundle?
【发布时间】:2014-04-22 17:00:06
【问题描述】:

我正在尝试覆盖位于 vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Routing/Router.php 的 Symfony2 路由器

我关注了这个tutorial,并创建了自己的捆绑包并在AppKernel.php 中注册。

<?php
// src/My/SymfonyBundle/MySymfonyBundle.php

namespace My\SymfonyBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class MySymfonyBundle extends Bundle
{
    public function getParent()
    {
        // die('test');
        return 'FrameworkBundle';
    }
}

这么胖都很好。我的包已被识别(通过在上面的函数中尝试die('test'); 进行测试)

我已经创建了 Symfony2 路由器的扩展版本

<?php
// src/My/SymfonBundle/Routing/Router.php

namespace My\SymfonyBundle;

use Symfony\Bundle\FrameworkBundle\Routing\Router as BaseRouter;

die('test');

class Router extends BaseRouter
{}

但它已被忽略。我希望看到我的调试test 消息,但是我的覆盖文件根本没有加载。

我也看到了这个question,但我看起来一点也不明白。

如何正确覆盖 Symfony2 核心包 (vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Routing/Router.php) 或核心组件 (vendor/symfony/symfony/src/Symfony/Component/Routing/Router.php)?

【问题讨论】:

    标签: php symfony core


    【解决方案1】:

    你太难了。

    如果您只想插入自己的路由器类,请在 app/config/parameters.yml 添加:

    router.class: My\SymfonyBundle\Router
    

    基本上,所有框架类都可以以这种方式覆盖。看一眼 供应商/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resouces/config/routing.xml

    不要使用 getParent 方法。它没有做你认为的那样。

    ================================================ =======

    已更新以响应获取有关 getParent 的信息的请求。

    getParent 记录在这里:http://symfony.com/doc/current/cookbook/bundles/inheritance.html

    它允许您覆盖父捆绑包中有限数量的文件。它真的是为调整第 3 方捆绑包而设计的。我很困惑尝试使用它并倾向于避免它。

    ================================================ =======

    最后一点:我建议将 router.class 添加到 parameters.yml 中,因为这是最容易使用的文件。但它确实应该放在 My\SymfonyBundle\Resources\config\services.yml 的参数部分,假设您正在加载服务文件。

    【讨论】:

    • :) 谢谢,最好的简单。您能介意解释一下getParent 的工作原理吗?或者请指出正确的方向,我不想最终被误导。
    • 顺便说一句,您忘记了路径中“资源”中的第二个“r”(有一段时间我很困惑,为什么我不能复制路径并打开文件)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多