2016-05-02 10 views
-1

Bewertung ist etwas sehr einfach, intuitiv und erfordern keine großen Gedanken von einem Benutzer, vor allem, wenn es als "Sterne" (in meinem Fall ist es bekannteste Rating-System von 1 bis 5). Dies steht oft im Gegensatz zu der Implementierung von Bewertungswidgets. Die beliebtesten Lösungen sind Formulare oder Links. Letzteres ist aufgrund einiger Probleme, insbesondere hinsichtlich der Art und Weise, wie Suchmaschinen die Seiten und Links sehen, sehr zu empfehlen.Vermeiden Sie Zeitablauf Fehler mit Symfony Form

Also ich habe das Implementieren von Bewertungs-Widget nach Formularen ausgewählt: vom technischen Standpunkt aus besteht es aus 5 "Senden" -Schaltflächen, und die Aktionsmethode weist einfach eine Bewertung zu, abhängig davon (1,2,3,4,5) Senden-Schaltfläche wurde von einem Benutzer angeklickt. Ich benutze Ajax im Moment nicht.

Einfach? Ich hoffte es. Das Problem tritt auf, weil PHP-Symfony2 (oder allgemein Websprachen) Plattform Formulare behandelt: wenn die Formularzeit abläuft, wird es nicht validiert! Aus Sicht eines Benutzers oder UX ist es eine sehr, sehr schlechte Sache - er oder sie klickt und erwartet, dass die Bewertung stattfindet. Ich habe nirgendwo im Netz eine Website gesehen (stelle mir zB ein Facebook mit "Gefällt mir" Button vor), welches eine Nachricht wie "Token ist abgelaufen, bitte erneut das Formular" anzeigt.

Wie behandelt man den Ablauf von Formularen in Fällen wie Bewertungen, bei denen ein Benutzer immer ein Formular wie dieses einreichen sollte, obwohl Validierung ein Prozess ist, der nicht (?) Aufgegeben werden sollte? Oder sollte ich die Validierung ignorieren, zumindest im Falle von Token?

+0

@Alok Für den Augenblick Ich mache genau das, was ich oben geschrieben habe: Ich zeige die standardmäßige "Formularablauf" -Nachricht an und frage einen Benutzer, es erneut zu resumieren. Aber aus Sicht von UX fühlt es sich sehr schlecht an und ich habe so etwas noch nirgendwo im Netz gesehen. Wie gehen Sie mit dem Ablauf des Bewertungsformulars um (vorausgesetzt, Sie verwenden hierfür Formulare)? – forsberg

+0

Anstelle von Formularen können Sie Links mit Ihrer Bewertung (von 1 bis 5) verwenden und die Links dann als Schaltflächen anzeigen. Dies sollte Probleme mit Tokens vermeiden. –

+0

Ich aktualisierte den Titel dieser Frage, es sieht aus wie Bewertung ist nicht das eigentliche Problem (möglicherweise haben Sie das gleiche Problem mit einem Textfeld, eine * wie * -Taste, etc.). Daher mag die Erwähnung der Bewertung im Titel verwirrend gewesen sein. –

Antwort

0

Ich hatte ein ähnliches Problem, wenn die Sitzungen im Cache beibehalten wurden. Jedes Mal, wenn ich die Website aktualisierte und den Cache löschte, wurden die Sitzungen zerstört und die Token ungültig gemacht.

Jetzt, dass die sessions are stored in the database Ich habe dieses Problem nicht gesehen. Hier ist die relevante Konfiguration:

app/config/config.yml:

framework: 
    session: 
     # ... 
     handler_id: session.handler.pdo 

services: 
    session.handler.pdo: 
     class:  Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler 
     public: false 
     arguments: 
      - 'mysql:host=%database_host%;port=%database_port%;dbname=%database_name%' 
      - { db_username: '%database_user%', db_password: '%database_password%' } 

Und die sessions Tabelle hat geschaffen, hier ist, wie es mit einer MySQL-Datenbank zu tun:

CREATE TABLE `sessions` (
    `sess_id` VARBINARY(128) NOT NULL PRIMARY KEY, 
    `sess_data` BLOB NOT NULL, 
    `sess_time` INTEGER UNSIGNED NOT NULL, 
    `sess_lifetime` MEDIUMINT NOT NULL 
) COLLATE utf8_bin, ENGINE = InnoDB; 
Verwandte Themen