Gamux Game Entwicklung  
     

Left Nav Mit Facebook verbinden Registrieren Lexikon Lexikon Interessengemeinschaften Suchen Heutige Beiträge Alle Foren als gelesen markieren Right Nav

Left Container Right Container
 
Alt 31.08.2011, 13:12   #1 (permalink)
Neuer Benutzer
 

Standard HMVC und AJAX?

Ich bin gerade mit einem Projekt (Browsergame ) beschäftigt, welches als Basis auf ein selbstgeschriebenes (H)MVC Framework aufsetzt. Alles funktioniert wunderbar, Module (MVC-Knoten) können beliebig tief verschachtelt werden. Die Erzeugung der MVC-Knoten werden innerhalb eines templates abgehandelt. Ich nehme als Beispiel mal die Index Seite:

PHP-Code:
<!--- Html Code -->
<body>
    <?php
        
echo $this->appendNode('GameNavi')->transform();
    
?>

    <!--- Weiterer Html Code -->

    <?php
        
echo $this->appendNode('GameFooter')->transform();
    
?>
</body>
Meine Template Klasse bietet die Methode appendNode für jedes Template an um dynamisch MVC-Knoten zu erzeugen. Im obrigen Beispiel wird zusätzlich zum Index die obere Navigation und der untere Footer eingebunden. Die Besonderheit ist nun:

Bekommt der Spieler eine neue Freundesanfrage oder neue Nachrichten, so steht nach einer Aktualisierung der Seite (Freunde(1) und Nachrichten(1)) in der Navigation. Es wird also angezeigt, wieviele neue Nachrichten und Freundesanfragen vorliegen. Mein Problem liegt jetzt nun beim logischen Verständis, wie ich

a) die Anfrage, ob neue Nachrichten und / oder Freundesanfragen vorliegen und
b) bei dem Aufruf einer neuen Seite keine Aktualisierung vorgenommen werden muss

mit AJAX realisieren kann. Jede Seite ist bisher nach demselben Schema aufgebaut (Haupt MVC-Knoten, im template werden dann jeweils die Navigations- und Footer Knoten eingebunden).

Ich hoffe ihr könnt mir da einen kleinen Denkanstoß bieten. Wäre euch sehr dankbar.
Apocalypse ist offline   Mit Zitat antworten An Facebook senden
Werbung
Alt 02.09.2011, 09:13   #2 (permalink)
Erfahrener Benutzer
 

Standard

Ich würde das ganze über eine "Action" lösen, welche du per Ajax aufrufen kannst und die dir nur den entsprechenden Knoten zurückliefert!
Megger ist offline   Mit Zitat antworten An Facebook senden
Alt 02.09.2011, 11:17   #3 (permalink)
Neuer Benutzer
 

Standard

Ich muss zugeben, dass ich leider fast so gut wie keine Ahnung von AJAX habe, aber ich denke, dass ich weiß worauf dein Vorschlag hinausläuft. Jedoch habe ich an dieser Stelle zwei Fragen zu deinem Vorschlag:

1. Was ist mit den Spielern, die kein Javascript aktiviert haben? Eigentlich wollte ich solche Spieler ja ursprünglich außen vor lassen, das ist allerdings noch nicht zu 100% sicher.

2. Wenn ich deinen Vorschlag umsetzen würde, wie würden dann die Knoten entsprechend im Content platziert werden? Die Platzierung der Navigation und des Footers ist ja in jedem Template identisch, aber was wäre, wenn ich zusätzlich noch einen weiteren Knoten bräuchte, der nur in einem Modul im gesamten Spiel zur Verfügung gestellt wird?
Apocalypse ist offline   Mit Zitat antworten An Facebook senden
Alt 02.09.2011, 22:11   #4 (permalink)
Erfahrener Benutzer
 

Standard

Spieler ohne Javascript sehen neue Freunde und neue Nachrichten erst wenn sie die Seite neuladen.

Eigentlich bleibt deine Seite genau so wie sie jetzt ist, nur dass du zusätzlich über eine weitere php Datei nur die aktuelle GameNavi transformiert zurückgegeben wird und per Javascript ersetzt du dann einfach den alten Inhalt, dass sollte der einfachste Weg bei dir sein.

Dadurch hast du dann halt den Vorteil, dass deine Seite weiterhin ohne Javascript funktionsfähig und trotzdem mit Javascript angenehmer zu nutzen ist
Megger ist offline   Mit Zitat antworten An Facebook senden
Alt 03.09.2011, 19:17   #5 (permalink)
Neuer Benutzer
 

Standard

Wie genau würde dann allerdings der Prozessablauf aussehen? Würde es denn nicht darauf hinauslaufen, dass die Navigation zweimal (einmal durch PHP selbst und zum anderen durch AJAX) geladen werden müsste? Oder bin ich gerade auf dem Holzweg? Ich sehe darüber hinaus auch noch ein zweites Problem: Jeder Controller sollte Zugriff auf die Request- und Response Objekte haben. Diese werden bzw. sollten i. d. R. im Konstruktur injiziert werden.

Geändert von Apocalypse (04.09.2011 um 06:21 Uhr).
Apocalypse ist offline   Mit Zitat antworten An Facebook senden
Alt 12.09.2011, 14:43   #6 (permalink)
Erfahrener Benutzer
 

Standard

Zitat:
Würde es denn nicht darauf hinauslaufen, dass die Navigation zweimal (einmal durch PHP selbst und zum anderen durch AJAX) geladen werden müsste?
Ich weiß nicht genau wie das alles bei dir aufgebaut ist, aber vereinfacht hast du für die Navigation per AJAX einfach eine php Datei
PHP-Code:
<?php
    $node 
= new Node('GameNavi');
    echo 
$node->transform();
    exit;
?>
Zitat:
Ich sehe darüber hinaus auch noch ein zweites Problem: Jeder Controller sollte Zugriff auf die Request- und Response Objekte haben. Diese werden bzw. sollten i. d. R. im Konstruktur injiziert werden.
Klingt irgendwie komisch, in deinem Framework sollte es einfach eine Möglichkeit geben von zentraler Stelle aus auf die Request- und Response Objekte zuzugreifen, ohne das du diese im Konstruktur injizieren musst.
Aber auch hier weiß ich nicht wie dein Framework arbeitet
Megger ist offline   Mit Zitat antworten An Facebook senden
Alt 12.09.2011, 15:19   #7 (permalink)
Neuer Benutzer
 

Standard

Zitat:
Zitat von Megger Beitrag anzeigen
Ich weiß nicht genau wie das alles bei dir aufgebaut ist, aber vereinfacht hast du für die Navigation per AJAX einfach eine php Datei
PHP-Code:
<?php
    $node 
= new Node('GameNavi');
    echo 
$node->transform();
    exit;
?>
Dieses Vorgehen verstehe ich, aber wie wird der entsprechende Teil denn ohne AJAX eingebunden? Wenn Javascript deaktiviert ist, muss doch PHP entsprechend einspringen und die Navigation an der entsprechend richtigen Stelle platzieren.

Zitat:
Zitat von Megger Beitrag anzeigen
Klingt irgendwie komisch, in deinem Framework sollte es einfach eine Möglichkeit geben von zentraler Stelle aus auf die Request- und Response Objekte zuzugreifen, ohne das du diese im Konstruktur injizieren musst.
Aber auch hier weiß ich nicht wie dein Framework arbeitet
Das umzumodellieren sollte durchaus möglich sein, ich werde mal darüber schlafen.

Geändert von Apocalypse (12.09.2011 um 15:22 Uhr).
Apocalypse ist offline   Mit Zitat antworten An Facebook senden
Alt 13.09.2011, 10:17   #8 (permalink)
Erfahrener Benutzer
 

Standard

Die Navigation wird doch jetzt schon korrekt eingebunden oder nicht? Dann brauchst du doch gar nichts an der Einbindung auf PHP-Seite ändern!

Du hast dann eine zusätzliche PHP Datei, die dir die Navigation einzeln ausliefert, diese PHP Datei rufst du dann per AJAX-Request ab.

Personen mit deaktiviertem Javascript müssen die Seite immer wieder aktualisieren, um zu überprüfen ob neue Nachrichten oder Freunde vorhanden sind.

Bei Personen mit aktiviertem Javascript wird die Navigation einfach automatisch abgefragt und ersetzt
Megger ist offline   Mit Zitat antworten An Facebook senden
Antwort

Themen-Optionen
Ansicht

Forumregeln
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Wie viel AJAX im Browsergame Zerber Clientseitige Sprachen 10 29.11.2008 23:11
Das beste JavaScript/AJAX Framework Eckart Clientseitige Sprachen 1 09.02.2008 14:31


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:44 Uhr.


Style Copyright by Wrestling Forum
Content Relevant URLs by vBSEO 3.3.0