Laravel 5'te Intervention 2.0 ile uğraşmak istediğim şey görüntüleri (boyut ve kırpma) işlemek ve görüntüleri önbelleğe almak için Image Caching Müdahaleleri kullanmaktır. Temel olarak elde etmeye çalıştığım şey, iyi eski (ve güvensiz) timthumb.php'un işlevselliğidir.Laravel 5 müdahale-görüntü/müdahale-önbellek: esnek url/yönlendirme
Ben bir örnek olarak bu kullanmaya başladı:
// routes.php
Route::get('imager/{src?}', function ($src)
{
$cacheimage = Image::cache(function($image) use ($src) {
return $image->make("files/image/".$src)->resize(100,50);
}, 10, true);
return Response::make($cacheimage, 200, array('Content-Type' => 'image/jpeg'));
});
ben şöyle bir resim yüklemek: Düzgün çalışır
// template
<img src="{{"imager/image.jpg"}}"/>
.
Ancak ... Durumumda görüntüler farklı alt dizinlerde, bazen birden çok düzeyde derinlerde bulunabilir. CMS'mde web yöneticileri tarafından tutuluyorlar.
örnekler:
- dosyaları/images/image.jpg
- dosyaları/images/başlıklar/image.jpg
- dosyaları/images/arka plan/renk/image.jpg
- img/common/logo.png
Bu resim URL'leri bir mysql tablo kaydından yüklenir.
zaman böyle bir görüntü yükler:
// template
<img src="{{"imager/files/images/image.jpg"}}"/>
rota artık çalışmıyor. Sonuçta, dosyaları,görüntüleri ve images.jpg Bunların miktarı farklı olabilir tüm url segmentleri ve bulunmaktadır.
Rota :: olsun ('görüntüleyici/dosyaları/images/image.jpg', function ($ src = false)
:(Kalın) görüntü url bir değişken olarak ele alınmalıdır
Öyleyse, boyutlandırma ve kırpma parametrelerini kapatabilirim çünkü img url uzunluğu değişebileceğinden, parametreler? W = 100 & h = 50 & h = true veya bir
Güncelleme
Ben görüntü url için bir sorgu parametresi kullanın:
Route::get('imager', function()
{
$src = Input::get('src', 1);
$cacheimage = Image::cache(function($image) use ($src) {
return $image->make($src)->resize(100,100);
}, 1, false); // one minute cache expiry
return Response::make($cacheimage, 200, array('Content-Type' => 'image/jpeg'));
});
// template
<img src="{{"imager?src=files/images/image.jpg"}}"/>
Bu çalışır.
Belki de bununla baş etmenin en iyi yolu mod_rewrite (Apache üzerindeyseniz) kullanmak ve şu gibi bir şey yapmaktır: RewriteRule^imager/([. *]) \. [Jpg | gif | png] $ imager? src = $ 1 –
Eski bir Laravel 4 projesinde de bu probleme sahiptim. Tüm yolları ve alt yolları, imagecache yapılandırma dosyasındaki yollar bölümüne ekledim. – ChainList