2011-09-27 66 views
0

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

我的代码是URL

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

我已经设置默认值= 0

当我运行此我得到值1,但它应该是4。当我再次运行该页面那么它应该以8结尾,然后再运行16以此类推。 我在做什么错。请帮助我。

回答

0

sfConfig 1不是存储持久性数据,使用sfStorage的好办法2代替,否则每次请求你的页面的值reseted到您的初始值。

你举的例子:

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)

+0

但我不知道你到底想干什么,让我知道,我可以告诉你如何使用永久存储或写配置(危险的方式。 ..) –

+0

感谢我想要的是,当我重新启动它应该保持它在这里的旧值5,并应增加到6 – Arasu

+0

然后,您需要使用sfStorage来存储您的数据并增加它并永久保存。 http://www.symfony-project.org/api/1_4/sfStorage –

3

当您使用sfConfig ::()设置你只对当前设置此值运行。你不是永久编辑app.yml。

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

你是关闭存储这种价值观在你的数据库更好。一个简单的查询就可以增加你的价值。

还要检查在一个相关的问题我的回答:edit values in app.yml by backend