web-dev-qa-db-ja.com

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関数を使用して、ファイルが存在するかどうかを確認するにはどうすればよいですか?

7
wobsoriano

テンプレート側で検証を行う必要がある場合は、カスタム関数を作成するだけで問題ありません。しかし、Twigはそのように使用されることを意図していません。

Valitadion 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(ここではSymfony2の男)を使用してtwigテンプレートをレンダリングする正確な方法はわかりませんが、同じロジックです。

8
viarnes

独自の関数または test を作成し、引数をPHP関数に渡すだけです。

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

そして、テンプレートで:

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

残念ながらは存在します英語では奇妙に聞こえます。おそらく、関数の方が理にかなっているでしょう。

12
Anonymous