gpt4 book ai didi

Symfony2 - 检查文件是否存在

转载 作者:行者123 更新时间:2023-12-03 22:49:10 25 4
gpt4 key购买 nike

我在 Twig 模板中有一个循环,它返回多个值。最重要的是 - 我的条目的 ID。当我没有使用任何框架和模板引擎时,我只是简单地使用了 file_exists()循环内。现在,我似乎无法在 Twig 中找到一种方法。

当我在标题中显示用户的头像时,我使用 file_exists()在 Controller 中,但我这样做是因为我没有循环。

我试过 defined在 Twig 中,但这对我没有帮助。有任何想法吗?

最佳答案

如果你想检查一个不是 twig 模板的文件(这样定义不能工作),创建一个 TwigExtension 服务并将 file_exists() 函数添加到 twig:

src/AppBundle/Twig/Extension/TwigExtension.php

<?php

namespace AppBundle\Twig\Extension;

class FileExtension extends \Twig_Extension
{

/**
* Return the functions registered as twig extensions
*
* @return array
*/
public function getFunctions()
{
return array(
new Twig_SimpleFunction('file_exists', 'file_exists'),
);
}

public function getName()
{
return 'app_file';
}
}
?>

注册您的服务:

src/AppBundle/Resources/config/services.yml
# ...

parameters:

app.file.twig.extension.class: AppBundle\Twig\Extension\FileExtension

services:

app.file.twig.extension:
class: %app.file.twig.extension.class%
tags:
- { name: twig.extension }

就是这样,现在您可以在 Twig 模板中使用 file_exists() ;)

一些模板.twig:
{% if file_exists('/home/sybio/www/website/picture.jpg') %}
The picture exists !
{% else %}
Nope, Chuck testa !
{% endif %}

编辑以回答您的评论:

要使用 file_exists(),您需要指定文件的绝对路径,因此您需要 web 目录绝对路径,为此可以访问您的 twig 模板中的 webpath
应用程序/配置/配置.yml:
# ...

twig:
globals:
web_path: %web_path%

parameters:
web_path: %kernel.root_dir%/../web

现在您可以在 Twig 模板中获取文件的完整物理路径:
{# Display: /home/sybio/www/website/web/img/games/3.jpg #}
{{ web_path~asset('img/games/'~item.getGame.id~'.jpg') }}

因此,您将能够检查文件是否存在:
{% if file_exists(web_path~asset('img/games/'~item.getGame.id~'.jpg')) %}

关于Symfony2 - 检查文件是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14231967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com