我正在使用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,依此类推。 我做错了什么。请帮助我。
答案 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)