如何从YAML获取和使用关联数组到Symfony中的操作?

qua*_*das 6 arrays yaml symfony1 associative

我已经在app.yml中获得了一些移民数据,我想在行动中预告他们.我尝试通过sfConfig :: get('app_datas')获取它们,但它失败了.让我们详细说明:

YAML:

all:
  datas:
    foo: bar
    foo2: bar2
Run Code Online (Sandbox Code Playgroud)

并在actions.class.php中我尝试使用此代码:

foreach (sfConfig::get('app_datas') as $key => $value) {

    echo "key $key has value $value";

}
Run Code Online (Sandbox Code Playgroud)

它不起作用,因为sfConfig :: get('app_datas')是NULL,怎么模拟得到它?

Jak*_*las 17

如果你想作为数组访问第一级,你可以在它们之间引入虚拟级别,就像@jeremy建议的那样.如果您不希望它实际出现在配置变量名称中,请用点加前缀:

all:
  .baz:
    datas:
      foo: bar
      foo2: bar2
Run Code Online (Sandbox Code Playgroud)

现在您应该可以使用以下方式访问您的数据:

foreach (sfConfig::get('app_datas') as $key => $value) 
{
  echo "key $key has value $value";
}
Run Code Online (Sandbox Code Playgroud)

  • 小修正:第二行(.baz)上的虚线值应该有一个冒号后缀,与其他行相同.(我会做一个编辑). (2认同)

Jer*_*man 11

当Symfony加载app.yml配置文件时,它只会存储第二级.所以你无法app_datas直接访问.如果你想获得一个包含foo和的数组foo2,那么创建一个YAML文件:

all:
  datas:
    baz:
      foo: bar
      foo2: bar2
Run Code Online (Sandbox Code Playgroud)

然后sfConfig::get('app_datas_baz'),您可以执行包含foofoo2作为键的数组.

在编辑:kuba的方式比假人更好; 忘记你可以那样做.