在解析YML时将变量从PHP传递到YML文件

时间:2017-01-10 10:34:41

标签: php laravel variables yaml template-engine

这是我的YML文件:

edit: '0'
parent: '0'
seo_title: 'gallery |'
seo_description: ''
seo_keywords: ''
fbtab: '0'
status: '1'
exceptions: {% pageType %}
calltoaction: 0

在PHP文件中:

$pageType = "something";
dump(Yaml::parse(file_get_contents('pathToYmlFile')));

问题是将$pageType传递给YML文件

2 个答案:

答案 0 :(得分:2)

YAML不是模板语言。它不了解变量替换。您有两种选择:

  • 在解析之前,使用模板语言预处理YAML文件。这例如在SaltStack中使用YAML和Jinja完成。
  • 在解析后,在已加载的字符串中进行替换。这仅适用于某些特定用例,例如某些YAML值总是被变量值替换,但可以在YAML中选择多个不同的变量进行替换。

第三种选择是使用YAML 标记来表示您给出的值是变量名。例如:

exceptions: !var pageType

!var此处定义了以下标量pageType的显式标记。大多数YAML实现允许您为!var标记的标量注册自定义构造函数 - 不幸的是,Symphony的YAML组件不具备此类功能,因此这不是您可以选择的选项。

答案 1 :(得分:2)

你实际上并不需要这个。

请记住,您将YAML文件转换为PHP结构。

解析后,您可以使用该结构执行任何操作。因此,您可以将所需的值分配给相应的字段。

的伪代码:

$pageType = "something";
$parsed = Yaml::parse(file_get_contents('pathToYmlFile'));
$parsed->exceptions = $pageType;

您没有指定您的特定用例,但就我从您的代码示例中看到的情况而言,它适合。