2012-03-30 38 views
0

我目前正在製作一個時鐘系統,它位於以前的開發人員所做的定製應用程序(CRM)中。我得一直很好到來時鐘進度,但只有很少的問題..symfony2會話,cookies或者完全不同的東西?

當在我的時鐘設置,像這樣一個會話:$this->get('session')->set('clockedin', 'true');

我設置會話,這樣我才能顯示clockin或clockout按鈕我想最簡單的方法是隻讀一個會話變量,以確定哪個按鈕顯示使用樹枝if/else語句在模板中(我有按鈕顯示在2個地方,1是在每一頁,1是隻在時鐘系統本身)

所以,這是最好的方式去做這個或有一個更好的推薦方式去做呢?

我想知道的是會話過期......在我config.yml我看到的下一件事:

session: 
    cookie_lifetime:  43200 
    auto_start:  true 

那麼,這是否意味着我已經設置的方式,持續12個小時?或者爲了這是真實的,我需要使用cookie嗎?我認爲,一個cookie可能會更好,因爲如果在瀏覽器關閉(很多員工都沒有在技術上傾倒)時我需要這是在接下來的頁面加載一個持久的..

感謝您的幫助。

+0

cookie_lifetime駐留在framework.session下如果我把它設置在那裏,我得到這個錯誤:在「framework.session」下的無法識別的選項「cookie_lifetime」。難道它沒有出現嗎? – ElPiter 2012-12-29 12:37:38

回答

0

如果另一個無限期延遲的操作取決於clockedin狀態,我不會依賴會話。如果用戶記錄他/她自己會話失效(整個會話),那麼clockedin將會丟失。

我寧願使用{% include %}{% render %}來確定每次需要顯示該按鈕時的狀態。例如:

/** 
* @Template() 
*/ 
public function clockedInAction(){ 
    .... // do some login here 
    $clocked_in = ....; 
    return array(
     'clockedin' => $clockedin 
    ); 
} 

,並在您的嫩枝:

{% render "AcmeBundle:SomeController:clockedIn" %} 

該控制器的模板將包含{% if .... %}你本來想:

{# AcmeBundle:SomeController:clockedIn.html.twig #} 
{% if clockedIn %} 
    display "Clocked In" button 
{% else %} 
    display "Clocked Out" button 
{% endif %} 

現在,這是因爲每個更貴要求您必須評估情況並打印適當的模板,但它始終與系統一致...

相關問題