dizzyd
dizzyd

Reputation: 201

Symfony2 - Checking if a file exists in Twig

Is there a way to check if the file exists in Twig for an image uploaded in a newly created post?

The way I have my post setup is if an image is not uploaded the Twig template will show an empty box with the proportions of where the image should be, but it's a blank box that's awkward to look at.

Question, is if there is a specific command to use with an if statement to check if a file exists if so, display the image code if not do not display the image code.

Image code: (this is the code I want to hide if no image exists to get rid of the empty box)

<div class="entry-thumbnail">
    <img width="230" height="172" src="{{ asset(['images/', post.image]|join) }}" class="" alt=""/>
</div>

Upvotes: 1

Views: 4657

Answers (1)

john Smith
john Smith

Reputation: 17926

you could write a twig extension and use some code like this:

use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\Filesystem\Exception\IOException;
use Symfony\Component\Finder\Finder;


    $this->fs=new Filesystem();

    if (!$this->fs->exists($directory)) {
        $this->logger->info("there is no ".$directory." ...");
    } else {
        $this->logger->info("Directory ".$directory."  already exists.");
    }

but i would rather use javascripz like

in your img tag :

<img ... onError="this.src='imagefound.gif';" />

update:

The image Tag has an onError-Handler that triggers when the image in the src attribute is not found. So instead of using this simple inline syntax you could do the same like :

pseudo jquery code:

$(document).on('error','img',function(){
    $(this).attr("src","../path/to/placeholerImage.png");
});

Upvotes: 1

Related Questions