不存在的路由的后备路由

时间:2015-02-18 19:11:33

标签: php error-handling url-routing silex

我在Silex有一个项目,有标准的路由,但是对于不存在的路由,我想重新路由或转发到主页或错误页面。

我在文档中没有看到这一点,但我不明白为什么这是不可能的。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

error handler复制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);
});

或者你可能想要重定向/前进(前者往浏览器往返,而后者没有)。检查redirect / forward的文档,基本上不是基于您只需要return $app->redirectreturn $app->forward

所需的呈现模板返回响应

答案 1 :(得分:0)

Symfony2有关于在Cookbook中自定义错误页面的部分。 看How to Customize Error Pages