2011-09-27 57 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