你能在Fat-Free Framework

时间:2017-02-08 01:01:38

标签: fat-free-framework

如果Fat-Free Framework(F3)发现传入的HTTP请求与应用程序中定义的任何路由都不匹配,是否有办法为这些情况设置默认路由。例如,要放置在文件中定义的所有路由的末尾,是否存在与之前任何路由都不匹配的任何传入HTTP请求的路由?

基本上,我想将任何找不到匹配的请求路由到特定的类/控制器。看起来这可能是可行的,但我无法在F3文档的任何地方找到它。

2 个答案:

答案 0 :(得分:1)

无法测试,但如果您使用通配符作为最后路由选项会怎样?

$f3->route('GET /*')

答案 1 :(得分:1)

最好注册一个能够处理404和其他错误代码的自定义错误处理程序,而不是注册默认路由。这种方法允许在以编程方式触发这些错误时重用错误控制器或错误函数;例如与Base->error(404)

  1. 使用ONERROR
  2. 注册处理程序
  3. 使用已注册的ONERROR处理程序
  4. 解析ERROR

    也可以使用beforeRoute()afterRoute()事件。

    示例

    <?php
    
    /** @var base $f3 */
    $f3->set('ONERROR', 'App\Module\Error\Controller\ErrorController->onError');
    
    class ErrorController
    {
        public function onError(Base $f3)
        {
            if ($f3->get('ERROR.code') == 404) {
                /**
                 * TODO Generate an appropriate HTTP 404 page
                 */
    
                // Handled the `404` error.
                return true;
            }
    
            // Let Fat-Free Framework's default error handler do the work.
            return false;
        }
    }