레이아웃이 두 번 표시되는 데 문제가있는 것 같습니다. 이것이 내가 Zend Layout을 특정 모듈에만 사용하고 메인 애플리케이션에는 사용하지 않는 나의 프론트 콘트롤러 플러그인 (아래 참조)에서 발생했는지 궁금합니다. 어떤 대답이라도 대단히 감사하겠습니다. 감사합니다레이아웃이 두 번 렌더링됩니다.
class My_Controller_Plugin_AdoptLayout extends Zend_Controller_Plugin_Abstract
{
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$moduleName = $request->getModuleName();
if ($moduleName == 'some-module') {
if (!Zend_Layout::isEnabled()) {
$view = new Zend_View(array('encoding' => 'UTF-8'));
$view->addScriptPath(ROOT_DIR . '/modules/some-module/views/scripts/');
$view->doctype('XHTML1_STRICT');
$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view);
Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
Zend_Layout::startMvc();
$layout = Zend_Layout::getMvcInstance();
$layout->setLayout('default');
$layout->setLayoutPath(APPLICATION_PATH . '/modules/some-module/views/scripts/layouts/');
$layout->setView($view);
}
}
}
}
감사합니다. 그것이 실제로 _forward 수 있을지 궁금해하지만 정말 그것을 작업 사이에 양식 값을 전달할 필요가 및 $ this-> helper-> 리디렉터 작동하도록 얻을 수없는 것처럼 그것을 사용해야합니다. 메인 애플리케이션이 Zend_View/Smarty 하이브리드를 사용하고 순수한 Zend_View처럼 모든 템플릿을 변경하고 싶지 않기 때문에 새로운 뷰 객체를 만들어야했습니다. – somekindofusernamegoeshere
양식 데이터를 다른 작업으로 전달해야하는 이유는 무엇입니까? 동일한 컨트롤러에서 동작입니다. 그렇다면 $ this-> otherAction();을 호출 할 수 없습니다. 또는 액션 체인을 사용하지만 액션 중 하나의 렌더링을 해제하지 않는 한 다른 뷰를 렌더링 할 수 있습니다. – andho