php - 不存在的路由的后备路由

标签 php error-handling url-routing silex

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

我没有在文档中看到此信息,但是我看不到为什么这不可能。

我该怎么做呢?

最佳答案

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

关于php - 不存在的路由的后备路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28591916/

相关文章:

powershell - 如何将 Invoke-SilentlyAndReturnExitCode 实现为 Powershell 模块功能?

php - Composer Web 应用程序文件夹结构

javascript - 如何在emberjs中获取运行转换的目标

c++ - 无法打开文件 : . ./sysdeps/posix/system.c

javascript - ember.js - 从任何路由换出嵌套资源

php - 如何根据用户名获取角色名?

php - CSS 背景颜色将不适用

php - OAuth 是否允许 localhost 进行调试?

php - readfile 下载空文件和错误的文件类型

objective-c - 是否可以将 NULL NSError** 传递给抛出的 Swift 函数?