2012-03-30 25 views
0

Ich mache gerade ein Zeit-Uhr-System, das innerhalb einer benutzerdefinierten Anwendung (CRM) ist, die ein vorheriger Entwickler getan hat. Ich habe die Zeituhr auskamen schön kommen, aber haben nur ein paar Fragen ..symfony2 Sitzungen, Cookies oder etwas völlig anderes?

Nach Taktung Ich habe eine Sitzung wie folgt: $this->get('session')->set('clockedin', 'true');

ich eine Sitzung festgelegt, so dass ich um die clockin zu zeigen, oder toutout button Ich dachte, die einfachste Methode wäre, einfach eine Session-Variable zu lesen, um zu bestimmen, welcher Button mit einem if/else-Statement in den Templates angezeigt werden soll (ich habe die Buttons an 2 Stellen, 1 ist auf jeder Seite und nur 1) in der Zeittakt-System selbst)

Also, ist dies der beste Weg, um dies zu tun oder gibt es einen besser empfohlenen Weg?

Das nächste, was ich fragte mich, ist Sitzungsablauf ... in meinem config.yml ich sehe:

session: 
    cookie_lifetime:  43200 
    auto_start:  true 

Also, bedeutet dies, dass die Art, wie ich es eingestellt habe 12 Stunden dauert? Oder, damit das stimmt, müsste ich stattdessen einen Cookie verwenden? Ich denke, dass ein Cookie besser sein könnte, denn wenn der Browser schließt (viele der Angestellten sind nicht technologisch geneigt) würde ich brauchen, dass dies auf der nächsten Seite eine Dauer sein wird.

Danke für jede Hilfe.

+0

cookie_lifetime befindet sich unter framework.session ?? Wenn ich es dort einstelle, erhalte ich diesen Fehler: Unbekannte Optionen "cookie_lifetime" unter "framework.session". Kommt das nicht für Sie heraus? – ElPiter

Antwort

0

Wenn ein anderer, unendlich späterer Vorgang von clockedin abhängt, würde ich mich nicht auf Sitzungen verlassen. Wenn sich der Benutzer abmeldet, wird die Sitzung ungültig (ganze Sitzung), so dass clockedin verloren gehen würde.

Ich würde lieber {% include %} oder {% render %} verwenden, um den Status jedes Mal zu bestimmen, wenn Sie diese Schaltfläche anzeigen müssen. Zum Beispiel:

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

und in Ihrem Zweig:

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

Vorlage dieses Controller würde enthält, dass {% if .... %} Sie wollten ursprünglich:

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

Nun, dies ist teurer, da auf jedem fordern Sie an, die Situation zu bewerten und dann die entsprechende Vorlage zu drucken, aber es ist immer konsistent mit einem System ...