사이트가 유지 관리로 설정되어 있는지 감지하는 컨트롤러 플러그인이 있습니다. 유지 관리 컨트롤러로 _forward하여 '미안 ...'메시지를 표시하고 싶습니다.컨트롤러 플러그인에서 젠드 _forward
리디렉션을 사용하지 않으려면 사용자의 현재 URL이 변경되지만 _forward는 Zend_Controller_Action 보호 된 메서드이므로 컨텍스트에서 호출 할 수 없습니다. 어떻게해야합니까?
사이트가 유지 관리로 설정되어 있는지 감지하는 컨트롤러 플러그인이 있습니다. 유지 관리 컨트롤러로 _forward하여 '미안 ...'메시지를 표시하고 싶습니다.컨트롤러 플러그인에서 젠드 _forward
리디렉션을 사용하지 않으려면 사용자의 현재 URL이 변경되지만 _forward는 Zend_Controller_Action 보호 된 메서드이므로 컨텍스트에서 호출 할 수 없습니다. 어떻게해야합니까?
때 플러그인의 preDispatch
메소드가 호출되면 요청이 전달되지 않습니다. 따라서 요청에 대한 컨트롤러 및 작업을 설정하여 "전달"할 수 있습니다.
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
if ($this->isMaintenanceMode()) {
$request->setControllerName('error');
$request->setActionName('maintenance');
}
}
플러그인이 _forward()를 제대로 수행 할 수 없기 때문에; 컨트롤러 (들) init()
방법 당신은 당신의 사이트 작업이 유지 보수 작업을하지 않습니다 유지 관리 모드 및에라는 플래그를 확인할 수 있습니다 다음 $this->_forward('maintenance-action');
뭔가 같은 :
// .. in your action controller
public function init() {
$maintenanceMode = checkTheFlagYourPluginSet();
// .. other code removed omitted
if ($maintainenceMode && $this->_request->getActionName() != 'maintenance-action') {
// return so that nothing else gets executed in the init()
return $this->_forward('maintenance-action');
}
}
나는 그 방식이 마음에 들다. 왜 내가 그걸 생각하지 않았을까? ;) –
좋은 생각, 고마워. – Ashley