Запасной маршрут для несуществующих маршрутов

0

У меня есть проект в Silex со стандартными определенными маршрутами, но для маршрутов, которые не существуют, я хотел бы перенаправить или переслать на домашнюю страницу или страницу с ошибкой.

Я не вижу этого в документации, но я не понимаю, почему это невозможно.

Как мне это сделать?

Теги:
error-handling
url-routing
silex

2 ответа

1

Копируя обработчик ошибок из Silex Skeleton, вы можете сделать это легко:

<?php

$app->error(function (\Exception $e, Request $request, $code) use ($app) {
    if ($app['debug']) {
        return;
    }

    // 404.html, or 40x.html, or 4xx.html, or error.html
    $templates = array(
            'errors/'.$code.'.html',
            'errors/'.substr($code, 0, 2).'x.html',
            'errors/'.substr($code, 0, 1).'xx.html',
            'errors/default.html',
    );

    return new Response($app['twig']->resolveTemplate($templates)->render(array('code' => $code)), $code);
});

Или вы можете перенаправить/переслать (первый отправляется в браузер, а второй - нет). Проверьте документы для переадресации/пересылки, в основном вместо того, чтобы возвращать ответ на основе отображаемого шаблона, вам просто нужно return $app->redirect или return $app->forward

0

Symfony2 содержит раздел о настройке страниц ошибок в Cookbook. Посмотрите, как настроить страницы ошибок

Ещё вопросы

Сообщество Overcoder
Наверх
Меню