Symfony (v2.3) 방법에 문제가 있습니다.다른 템플릿으로 전달
기본적으로 두 개의 서로 다른 번들로 두 개의 컨트롤러가 있습니다. 앱의 데스크톱 버전은 DesktopBundle
이고 모바일 버전은 MobileBundle
이라고 가정 해 보겠습니다.
DesktopBundle
의 동작 코드를 MobileBundle
의 동작으로 다시 사용하고 싶습니다. 내가 지금하는 것은 앞으로입니다 :
namespace Acme\DesktopBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
/**
* @Route("/")
*/
class IndexController extends Controller
{
/**
* @Route("", name="desktopIndex")
* @Template()
*/
public function indexAction()
{
/* some code I don't want to duplicate */
return array(
'some' => 'var'
);
}
}
MobileController는
namespace Acme\MobileBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
/**
* @Route("/")
*/
class IndexController extends Controller
{
/**
* @Route("", name="mobileIndex")
* @Template()
*/
public function indexAction()
{
return $this->forward('AcmeDesktopBundle:Index:index');
}
}
지금은 작동
DesktopController하지만 분명히 Response
객체는 바탕 화면의 렌더링 템플릿으로 반환된다 버전은 indexAction
입니다.
내가 원하는 것은 변수를 얻은 다음 모바일 버전의 템플릿을 렌더링하는 것입니다. 내가 뭘하려
는데스크톱 버전으로 조건부 작업을 전방 방법으로 변수를 전달하고 렌더링하는 것입니다 : 이것은 일하는 것이
return $this->forward(
'acmeDesktopBundle:Index:index',
array('mobile' => true)
);
,하지만 난 정말 내 코드를 변경하지 않으 DesktopBundle
이지만 MobileBundle
만 이것을 달성 할 수있는 방법이 있습니까? 나는 뭔가를 놓치고 있습니까? 아니면 완전히 다른 해결책을 찾아야합니까?
예, 나는이 일을 시도하지만 난 나에게이 오류가 발생합니다 :'FatalErrorException을 : 오류 :의/var/www /에서 공급 업체의 비 객체의 멤버 함수의 get()로 전화/심포니/심포니/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php 라인 251' – Brewal
그래, 컨테이너를 세워야 해. 내 편집을 참조하십시오. –
나는 그것을 놓쳤다. 정말 멋진. 감사 :) – Brewal