Я пытаюсь реализовать что-то вроде Mark Story на странице "Down for Maintenance" , используя CakePHP 2.1.0.Я довольно близок к достижению этого, но я сталкиваюсь с двумя проблемами, с которыми я мог бы помочь.Прежде всего, вот весь соответствующий код (шесть файлов):
1) app / Config / bootstrap.php:
Configure::write('App.maintenance', true);
2) app / Config / core.php:
Configure::write('debug', 1);
...
Configure::write('Exception', array(
'handler' => 'ErrorHandler::handleException',
'renderer' => 'AppExceptionRenderer',
'log' => true
));
3) app / Controller / AppController.php:
if (Configure::read('App.maintenance') == true) {
App::uses('DownForMaintenanceException', 'Error/Exception');
throw new DownForMaintenanceException(null);
}
4) app / Lib / Error / Exception / DownForMaintenanceException.php:
<?php
class DownForMaintenanceException extends CakeException {}
5) app / Lib / Error / AppExceptionRenderer.php:
<?php
App::uses('ExceptionRenderer', 'Error');
class AppExceptionRenderer extends ExceptionRenderer {
function _outputMessage($template) {
// Call the "beforeFilter" method so that the "Page Not Found" page will
// know if the user is logged in or not and, therefore, show the links that
// it is supposed to show.
if (Configure::read('App.maintenance') == false)
{
$this->controller->beforeFilter();
}
parent::_outputMessage($template);
}
public function downForMaintenance() {
$url = $this->controller->request->here();
$code = 403;
$this->controller->response->statusCode($code);
$this->controller->set(array(
'code' => $code,
'url' => h($url),
'isMobile' => $this->controller->RequestHandler->isMobile(),
'logged_in' => false,
'title_for_layout' => 'Down for Maintenance'
));
$this->_outputMessage($this->template);
}
}
6) app / View / Errors / down_for_maintenance.ctp:
<p>Down for Maintenance</p>
Теперь по двум вопросамЯ испытываю.Во-первых, этот код работает только тогда, когда отладка установлена выше 1. Могу ли я что-нибудь с этим сделать?Означает ли это, что я поступаю неправильно?Вторая проблема заключается в том, что, хотя я устанавливаю переменные представления «isMobile» и «logged_in» на логические значения в методе «downForMaintenance», файл «app / View / Layouts / default.ctp»видит их как строк .Что я могу с этим поделать?
Спасибо!