首页 > 解决方案 > 用于图像的 Slim 框架 3 路径/路由

问题描述

我有以下结构:

index.php
/app
/images

我为所有不同的页面和诸如此类的东西设置了路线,但是当我尝试直接访问图像时,它会尝试选择该路线作为我的动态路线之一。

因此,对于上下文,我从一个预先存在的应用程序转换它并维护它拥有的链接/路径,我在索引的末尾有一个完全动态的路由:

$app->get('/{page}', 'HomeController:processRequest');
$app->get('/{page}/{id}', 'ProductController:viewProduct');
$app->get('/{page}/{id}/{show}', 'ProductController:viewProduct');

因此,当我在图像标签中执行以下操作时:

https://example.com/images/nav/tinycheck.png

那条路线开始了,但它失败了。有什么方法可以告诉 Slim 忽略路径中带有“图像”的任何内容,只提供图像?

我已经尝试在这里查看一堆其他线程,但没有任何东西可以让我找到答案。

标签: phpslim-3

解决方案


我似乎已经通过以下方式解决了它:

$app->get('/images/nav/{data}', function($request, $response, $args) {    
    $data = $args['data'];
    $image = @file_get_contents("/mypath/images/nav/".$data);
   if($image === FALSE) {
       $handler = $this->notFoundHandler;
       return $handler($request, $response);    
    }

    $response->write($image);
    return $response->withHeader('Content-Type', FILEINFO_MIME_TYPE);
});

推荐阅读