Kohana3 - Шаблон ошибок, если ошибки = ЛОЖЬ - PullRequest
0 голосов
/ 11 июля 2010

В моем Bootstrap.php я деактивировал Профилировщик (или лучше его активировать?) И Ошибки.

Теперь, если кто-то вызывает URL, может быть: / notexist, и тамне является action_notexist (), сайт пуст.

Мой вопрос: как создать основной шаблон ошибок, который следует загружать вместо белой страницы.Например, если вы звоните: http://twitter.com/notexistinguser, появляется ошибка «Страница не существует», то же самое с Kohana3?

Спасибо:)

Ответы [ 3 ]

2 голосов
/ 11 июля 2010

Не игнорируйте исключения, ловите их.

1 голос
/ 15 июля 2010

Я новичок в Kohana, но я использую следующую технику. Сначала определите некоторую константу, например, IN_PRODUCTION:

define('IN_PRODUCTION', true);

Во-вторых, создайте новый класс исключения, например Exception_404 , который наследует Kohana_Exception . В-третьих, замените этот код:

echo Request::instance()
->execute()
->send_headers()
->response;

со следующим:

$request = Request::instance();
try 
{
    $request->execute();
}
catch(Exception_404 $e)
{
    if ( ! IN_PRODUCTION)
    {
        throw $e;
    }

    //404 Not Found
    $request->status = 404;
    $request->response = View::factory('404');
}

print $request->send_headers()->response;

Теперь у вас есть собственный шаблон ошибок. Это то, что вы хотите?

1 голос
/ 13 июля 2010

Что вам нужно сделать, это перехватить Kohana_Exception в вашем файле bootstrap.php .Вот пример кода из одного из моих проектов.

try
{
    echo Request::instance()
        ->execute()
        ->send_headers()
        ->response;
}
catch (Kohana_Exception $e)
{
    echo Request::factory('static/404')->execute()->send_headers()->response;
}

Я объясню, что здесь происходит.Если для запрошенного URL-адреса не существует маршрута, он выдает Request_Exception (экземпляр Kohana_Exception).

Затем я использую функцию HMVC для создания подзапроса к странице 404который имеет дело с шаблоном, кодами состояния, протоколированием и сообщениями об ошибках.

В будущем у Коханы может быть специальное исключение, касающееся ответов, но сейчас вы можете использовать мое решение.это помогло вам.

...