Кохана 3 :
Вы можете определить универсальный маршрут в bootstrap.php
до Kohana::modules()
строк:
if (/* check if site is in under maintenance mode */) {
Route::set('defaulta', '(<id>)', array('id' => '.*'))
->defaults(array(
'controller' => 'errors',
'action' => 'maintenance',
));
}
Или вы можете даже возиться с просьбой сделать то же самое:
if (/* check if site is in under maintenance mode */) {
echo Request::factory('errors/maintenance')
->execute()
->send_headers()
->response;
}
Кохана 2 :
Вам нужно было бы расширить Controller
и обработать отображение страницы «при обслуживании» в конструкторе (но вам нужно убедиться, что все ваши контроллеры расширяют этот класс контроллеров вместо ванильного):
abstract class Custom_Controller extends Controller {
public function __construct()
{
parent::__construct();
if (/* check if site is in under maintenance mode */) {
$page = new View('maintenance');
$page->render(TRUE);
exit;
}
}
}
Или вы можете даже использовать систему ловушек для этого, добавив файл в папку hooks
(убедитесь, что вы включили ловушки в config.php
):
Event::add('system.ready', 'check_maintenance_mode');
function check_maintenance_mode() {
if (/* check if site is in under maintenance mode */) {
Kohana::config_set('routes', array('_default' => 'errors/maintenance'));
}
}
Как вы можете видеть, на самом деле есть много способов сделать что-то в Kohana, потому что это очень гибкий PHP-фреймворк:)