0

をフィルタリングした後に表示されません。LiipImagineBundle画像は、私は私のデータベースに画像をアップロードする<strong>VichUploadBundle</strong>を使用していて、<strong>LiipImage</strong>と、ウェブサイトに表示された画像のサムネイルを持っていると思い

これは、設定ファイルと私のconfig.ymlある

//..... 
vich_uploader: 
    db_driver: orm 
    twig: true 
    mappings: 
      product_image: 
       uri_prefix:   /images/products 
       upload_destination: '%kernel.root_dir%/../web/images/products' 

       inject_on_load:  false 
       delete_on_update: true 
       delete_on_remove: true 

liip_imagine: 

    # configure resolvers 
    resolvers: 

     # setup the default resolver 
     default: 

      # use the default web path 
      web_path: ~ 

    # your filter sets are defined here 
    filter_sets: 

     # use the default cache configuration 
     cache: ~ 
     # the name of the "filter set" 
     my_thumb: 

      # adjust the image quality to 75% 
      quality: 75 

      # list of transformations to apply (the "filters") 
      filters: 

       # create a thumbnail: set size to 120x90 and use the "outbound" mode 
       # to crop the image when the size ratio of the input differs 
       thumbnail: { size: [120, 90], mode: outbound } 

       # create a 2px black border: center the thumbnail on a black background 
       # 4px larger to create a 2px border around the final image 
       background: { size: [124, 98], position: center, color: '#000000' } 

liipのコードのほとんどはまっすぐにテスト用の文書からコピーされます。

これは最後に、私は私がアップロードしたい画像の実体を持っている私ののrouting.yml

app: 
    resource: "@AppBundle/Controller/" 
    type:  annotation 

_liip_imagine: 
    resource: "@LiipImagineBundle/Resources/config/routing.xml 

です。 それは私が私が後で視野に入れたの$ EM

$em = $this->getDoctrine()->getManager(); 
$list = $em->getRepository(Image::class)->findAll(); 

で配列に入れた画像テーブルを持っているだけでなく、公式VICHのドキュメントからの私のコントローラ

<?php 
namespace AppBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Symfony\Component\HttpFoundation\File\File; 
use Vich\UploaderBundle\Mapping\Annotation as Vich; 

/** 
* @ORM\Entity 
* @Vich\Uploadable 
*/ 
class Image 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    // ..... other fields 

    /** 
    * NOTE: This is not a mapped field of entity metadata, just a simple property. 
    * 
    * @Vich\UploadableField(mapping="product_image", fileNameProperty="imageName") 
    * 
    * @var File 
    */ 
    protected $imageFile; 

    /** 
    * @ORM\Column(type="string", length=255) 
    * 
    * @var string 
    */ 
    protected $imageName; 

    /** 
    * @ORM\Column(type="string", length=100) 
    * 
    * @var string 
    */ 
    protected $imageTitle = null; 

    /** 
    * @ORM\Column(type="string", length=100) 
    * 
    * @var string 
    */ 
    protected $imageAuthor = null; 

    /** 
    * If manually uploading a file (i.e. not using Symfony Form) ensure an instance 
    * of 'UploadedFile' is injected into this setter to trigger the update. If this 
    * bundle's configuration parameter 'inject_on_load' is set to 'true' this setter 
    * must be able to accept an instance of 'File' as the bundle will inject one here 
    * during Doctrine hydration. 
    * 
    * @param File|\Symfony\Component\HttpFoundation\File\UploadedFile $image 
    * 
    * @return Product 
    */ 
    public function setImageFile(File $image = null) 
    { 
     $this->imageFile = $image; 

     if ($image) { 
      // It is required that at least one field changes if you are using doctrine 
      // otherwise the event listeners won't be called and the file is lost 
      $this->updatedAt = new \DateTimeImmutable(); 
     } 

     return $this; 
    } 

    /** 
    * @return File|null 
    */ 
    public function getImageFile() 
    { 
     return $this->imageFile; 
    } 

    /** 
    * @param string $imageName 
    * 
    * @return Product 
    */ 
    public function setImageName($imageName) 
    { 
     $this->imageName = $imageName; 

     return $this; 
    } 

    /** 
    * @return string|null 
    */ 
    public function getImageName() 
    { 
     return $this->imageName; 
    } 

    /** 
    * @ORM\Column(type="datetime") 
    * 
    * @var \DateTime 
    */ 
    protected $updatedAt; 

    /** 
    * @return null 
    */ 
    public function getImageTitle() 
    { 
     return $this->imageTitle; 
    } 

    /** 
    * @param null $imageTitle 
    */ 
    public function setImageTitle($imageTitle) 
    { 
     $this->imageTitle = $imageTitle; 
    } 

    /** 
    * @return null 
    */ 
    public function getImageAuthor() 
    { 
     return $this->imageAuthor; 
    } 

    /** 
    * @param null $imageAuthor 
    */ 
    public function setImageAuthor($imageAuthor) 
    { 
     $this->imageAuthor = $imageAuthor; 
    } 
} 

をコピーしたコードだと

{% for l in list %} 
     <tr> 
      <td> 
       <img src="{{ asset('/images/products/'~l.imageName) | imagine_filter('my_thumb') }}" alt="{{ l.imageName }}"> 

      </td> 
      <td>{{ l.imageTitle }}</td> 
      <td>{{ l.imageAuthor }}</td> 
     </tr> 
    {% endfor %} 

残念ながら、出力は次のようになります。 Website output


これでパスは正常です。画像は、imagine_filter()なしでうまくいきます。 Vichアセットを使用するときにも同じ効果が発生します。

画像が下にリンクされているパスは確認:

http://localhost:8000/media/cache/resolve/my_thumb/images/products/hqdefault.jpg

画像へのパスが

ウェブ/画像/製品


です

問題の原因を知っている人はいますか?

、すべてのヘルプは

+0

ログを確認して、Webサーバーの所有者(または777の権限)でfder '/ web/media'を作成してみてください。 – malcolm

答えて

0

FIXED素晴らしいだろう、画像のサムネイルに

を作成するための代替バンドルを提供する:php.iniでGDファイル名を有効にするとApacheを修正再表示、その後クリアキャッシュをすべて修正しました

関連する問題

 関連する問題