2013-04-08 5 views
0

확장 :이 정상적인 컨트롤러로 잘 작동 Symfony2 컨트롤러

런타임 알림 : ControllerExtension :: render()의 선언은 Symfony \ Bundle \ FrameworkBundle \ Controller \ Controller :: render()에서 호환되어야합니다. 번들/SiteBundle/Controller/DefaultCont 로 현재 실제로 ControllerExtension::renderBundleName\Bundle\SiteBundle\Controller\Response 일치하도록 노력하고, use Symfony\Component\HttpFoundation\Response은 수정해야 추가

use Symfony\Component\HttpFoundation\Response 
+1

을 나는 오버라이드 (override)'render' 방법은 이전보다 사용하기 쉽다는 이유를 실패? –

+1

나는 왜 그가 그것을 전혀 무시해야하는지 알지 못한다 ... – AchrafSoltani

답변

6

PHP는 게으른 형식의 언어입니다. 문자열, 정수 또는 부울은 배열 및 클래스 이름 만 지정할 수 없습니다.

그래서, 작업 기능과 올바른 PHP를 얻기 위해, 당신은이 작업을 수행해야합니다

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Response; //! important as @Inori said 

class ControllerExtension extends Controller 
{ 
    public function render($view, array $parameters = array(), Response $response = null) 
    { 
     return parent::render($view, $parameters, $response); 
    } 
} 
+0

'Request'가 아닌'Response' :) – Inoryy

+0

@Inori 감사합니다. –

+0

감사. 이제 작동합니다. 또한 '모든'컨트롤러에 대해 확장 부분을 실행할 수 있습니까? 분명히 컨트롤러 파일에서 꺼내야합니다. 나는 그것을 서비스라고 부르려고했지만, 제대로 작동하지는 않는다. 나는 모든 컨트롤러에 포함시키는 것이 좋은 생각이라고 생각하지 않습니다. – user2143356

1

: roller.php는

은 (어디 선가 본 수정되는)이 차이가 없습니다 추가.

정확히 어디에 줄을 추가합니까?

P. 파일 당 1 클래스 만 정의하는 것이 좋습니다

+0

고마워. 그래도 작동하지 않습니다. 나는 지금 그것을 다시 시도했다. (다른 use 문 아래에 추가했다.) 파일에있는 두 클래스는 데모 목적으로 만 사용됩니다. 이 문제에 대한 해결책이 있어야합니다. 간단해야합니다. – user2143356