Twig如何检查文件是否存在。

7

你好,我正在使用slim框架和twig,下面是我的php代码:

$filename = '/path/to/foo.txt';
if (file_exists($filename)) {
    echo "The file $filename exists";
} else {
    echo "The file $filename does not exist";
}

现在我想把if语句放在我的模板文件中。我该如何在twig模板中使用file_exists函数,以便检查文件是否存在?


我认为更好的解决方案在这里找到了 https://dev59.com/3pnga4cB1Zd3GeqPZYDp#38737766 - user1077915
3个回答

14
你可以创建自己的函数或测试,然后将参数传递给PHP函数。
$test = new Twig_SimpleTest('ondisk', function ($file) {
    return file_exists($file);
});

然后在你的模板中:

{% if filename is ondisk %}
    blah
{% endif %}

不幸的是,在英语中使用is exists听起来有点奇怪。也许使用一个函数会更有意义。


2
我应该把创建的函数放在哪里? - wobsoriano
有点难以理解,但我会尽力 :D - wobsoriano

8

如果您确实需要在模板端进行验证,那么创建自定义函数就可以了。但是Twig并不是用来这样使用的。

您可以在php端进行验证,并将标志传递给模板:

PHP

$filename = '/path/to/foo.txt';
$file_exists = file_exists($filename);
// ...
$app->render(
    'yourTemplate',
    array( 'file_exists' => $file_exists )
);

TWIG

{% if file_exists %}
    do stuff
{% endif %}

免责声明:我不知道使用Slim渲染twig模板的确切方法(我是Symfony2专家),但逻辑相同。

0

对于那些使用Symfony和Liip Image vich_uploader的人,想要检查数据库中存储的文件是否存在(例如在图像列表/画廊中),这是我的解决方案:

{% set filePath = vich_uploader_asset(image, 'imageFile') %}
{% if filePath is not null %}
   ....
{% endif %}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接