2014-04-22 2 views
0

는 나는이 tutorial을 따랐습니다 그리고 난 내 자신의 번들을 작성 AppKernel.php에 등록했습니다 vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Routing/Router.phpsymfony2 core FrameworkBundle을 덮어 쓰는 방법은 무엇입니까?

에있는 Symfony2 라우터 덮어 쓰기를 시도하고있다.

<?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)를 올바르게 덮어 쓰는 방법은 무엇입니까?

답변

0

너무 열심히하고 있습니다.

당신이 당신이 원하는 모든 앱/설정/parameters.yml 추가 기능에 다음 자신의 라우터 클래스를 플러그인하는 경우 :

router.class: My\SymfonyBundle\Router 

기본적으로 프레임 워크 클래스는 모두이 방식으로 재정의 할 수 있습니다. vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resouces/config/routing.xml을 참조하십시오.

getParent 메소드를 사용하지 마십시오. 당신이 생각하는대로하지 않습니다.

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

은의 getParent에 대한 정보 요청에 대한 응답으로 업데이트되었습니다.

의 getParent는 여기에 설명되어 있습니다 : http://symfony.com/doc/current/cookbook/bundles/inheritance.html 그것은 당신이 부모 번들에서 파일의 제한된 수의 재정의 할 수

. 타사 번들을 조정할 수 있도록 설계되었습니다. 나는 그것을 사용하려고 애쓰며 혼란스러워하고 피하는 경향이있다.

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

마지막으로 참고 : 나는이 가장 사용하기 쉬운 파일이 때문에 parameters.yml하는 router.class를 추가 제안했다. 하지만 서비스 파일을로드한다고 가정하면 My \ SymfonyBundle \ Resources \ config \ services.yml의 매개 변수 섹션에 들어가야합니다.

+0

:) 감사합니다. 단순함이 가장 좋습니다. 'getParent'가 어떻게 작동하는지 설명해 주시겠습니까? 또는 올바른 방향으로 나를 가리켜주세요, 나는 잘못 인도되고 싶지 않습니다. – gondo

+0

btw 당신은 경로에서 'Resources'의 두 번째 'r'을 잊어 버렸습니다 (잠시 혼란스러워서 패스를 지나서 카피하고 파일을 열지 못했습니다) – gondo

관련 문제