2016-09-18 3 views
0

Я пытаюсь связать изображения, не используя расширение, потому что мне гораздо проще поддерживать все мои клиентские файлы.Обслуживание динамических активов с помощью Slim и Twig

assets/images/client должно быть разрешено до assets/images/client.png, когда браузер отображает страницу.

В Slim он думает, что это маршруты, а не обработка изображения. Есть ли способ устранить что-либо с /assets от обработки через Slim и заставить его просто пройти обычный HTTP-запрос?

+0

Вы должны добавить это в файл '.htaccess' файл с запросы папки конфигурации по умолчанию будут отправляться на ваш index.php – jmattheis

ответ

1

Рассмотрите возможность возврата этих изображений с помощью Slim, он сохраняет управление в ваших руках: вы можете изменить маршрут или папку в любое время. Также вы можете установить дополнительные заголовки, например. для кеширования.

$app->get('/assets/images/{pathToClientImage}', function($request, $response, $args) { 
    $pathToFile = $args['pathToClientImage']; 
    $containingFolder = '../clients_images/'; // the actual folder where files are stored 
    // since you want to omit file extension in the url, we'll have to find the file 
    $matches = glob($containingFolder.$fileName.'.*'); 
    if ($matches) { 
     $clientImagePath = array_shift($matches); // let's grab the first file matching our mask 
     $clientImage = @file_get_contents($clientImagePath); 
     $finfo = new \Finfo(FILEINFO_MIME_TYPE); 
     $response->write($clientImage); 
     return $response->withHeader('Content-Type', $finfo->buffer($clientImage)); 
    } else { 
     // if no matches found, throw exception that will be handled by Slim 
     throw new \Slim\Exception\NotFoundException($request, $response); 
    } 
}); 

В случае, если URL-адреса, как assets/images/client.png (имеющие расширение файла) является приемлемым для вас, вы можете сделать это более простым способом:

$app->get('/assets/images/{pathToClientImage}', function($request, $response, $args) { 
    $pathToFile = $args['pathToClientImage']; 
    $path = '../clients_images/'.$fileName; 
    $image = @file_get_contents($path); 
    $finfo = new \Finfo(FILEINFO_MIME_TYPE); 
    $response->write($image); 
    return $response->withHeader('Content-Type', $finfo->buffer($image)); 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^