在symfony中为app.yml中的参数设置值

时间:2011-09-27 07:27:48

标签: symfony1 propel

我正在使用Symfony Propel。我想在for循环中更改我的app.yml变量值。

我的代码是

for($i=0;$i<5;$i++)
{
$previousValue = sfConfig::get('app_url');
sfConfig::set('app_url', $previousValue+1);
echo sfConfig::get('app_url');
}

我为url = 0设置了默认值

当我运行这个时,我得到的值为1,但它应该是4.当我再次运行页面时,它应该以8结束,然后再运行16,依此类推。 我做错了什么。请帮助我。

2 个答案:

答案 0 :(得分:3)

当您使用sfConfig :: set()时,您只为当前运行时设置此值。您没有永久编辑app.yml。

虽然从技术上来说可以用PHP编辑YAML文件,我不建议,因为它与其他替代方案相比过于复杂,而且symfony无论如何都会缓存已解析的YAML文件。

最好将这种值存储在数据库中。一个简单的查询就足以增加你的价值。

另请在相关问题中查看我的回答:edit values in app.yml by backend

答案 1 :(得分:0)

sfConfig 1 不是存储持久数据的好方法,而是使用 sfStorage 2 ,否则每次请求您的网页时值重置为初始值。

你的例子:

app.yml

  all:
   url: 0

indexSuccess.php的

  for($i=0;$i<5;$i++) {
    $previousValue = sfConfig::get('app_url');
    sfConfig::set('app_url', $previousValue+1);
    echo sfConfig::get('app_url');
  }

输出:

12345

但每次重新启动时,您都会获得相同的输出。

Ps:当您声明或初始化配置值时,请不要忘记清除缓存 (php symfony cc)