您必须先解码 JSON。我会建议以下两种方法之一:
- 为 Twig创建自定义
manifest
函数,该函数将返回解码的清单对象
- 或为 Twig 创建
json_decode
过滤器,解码包含的 json 内容并使用它
显式函数
<?php
namespace App\Twig;
class ManifestExtension extends \Twig_Extension
{
private $manifestFile;
public function __construct($manifestFile)
{
$this->manifestFile = $manifestFile;
}
public function getFunctions()
{
return array(
new \Twig_SimpleFunction('manifest', array($this, 'manifest')),
);
}
public function manifest()
{
$content = file_get_contents($this->manifestFile);
return json_decode($content);
}
}
services.yml
您可以在提供 manifest.json 文件的路径时将其注册为服务。
App\Twig\ManifestExtension:
class: 'App\Twig\ManifestExtension'
arguments: ['%kernel.project_dir%/../public/manifest.json']
tags: [twig.extension]
用法:
{% set manifest = manifest() %}
json_decode 过滤器
这里已经介绍过了:
在 Twig 中解码 JSON
用法:
{% set manifest %}
{% include './manifest.json' %}
{% endset %}
{% set manifest = manifest | json_decode %}