Twig 检查文件是不是存在

Posted

技术标签:

【中文标题】Twig 检查文件是不是存在【英文标题】:Twig check if file existsTwig 检查文件是否存在 【发布时间】:2015-10-05 06:41:33 【问题描述】:

您好,我使用的是 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 函数来检查文件是否存在?

【问题讨论】:

我认为可以在这里找到更好的解决方案***.com/a/38737766/1077915 【参考方案1】:

您可以创建自己的函数或test,然后将参数传递给 PHP 函数。

$test = new Twig_SimpleTest('ondisk', function ($file) 
    return file_exists($file);
);

然后在你的模板中:

% if filename is ondisk %
    blah
% endif %

不幸的是 is exists 在英语中听起来很奇怪。也许函数会更有意义。

【讨论】:

我应该把创建的函数放在哪里? 很难理解但会尝试:D【参考方案2】:

如果您确实需要在模板端进行验证,则创建自定义函数就可以了。但 Twig 并不意味着以这种方式使用。

您可以只制作 valitadion php 端并将标志传递给您的模板:

PHP

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

树枝

% if file_exists %
    do stuff
% endif %

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

以上是关于Twig 检查文件是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

检查实体字段类型是不是在 Twig 中返回值

简单检查表单字段在 Twig 模板中是不是有错误

渲染前检查模板是不是存在

如何检查今天是不是在 Twig 的两个日期之间?

Twig - 如何检查变量是不是为数字/整数

如何以编程方式检查/ lint一个Twig模板