2012-03-30 47 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 %} 

现在,这是因为每个更贵要求您必须评估情况并打印适当的模板,但它始终与系统一致...