Hallo Zusammen,

sorry für den schlechten Titel.

Das Problem/Anforderung vorab: Formdaten können per Action=POST gesendet werden, oder man bedient sich AJAX.
Vorteil der Post-Methode, der Seitenaufbau der Antwortseite der gesendeten Daten kann z.B. über twig gerendert werden. Nachteil, die Seite muss komplett neu aufgebaut werden, und der View Bereich verschiebt sich meist.
Vorteil der AJAX-Methode, ich muss "nur" den Bereich aktualisieren der sich auf der Seite geändert hat. Nachteil, ich kann dafür nicht z.B. twig verwenden und muss Änderungen über JavaScript umsetzen.

Ich beschäftige mich seit ca. zwei Jahren außerhalb der Arbeit mit Web-Entwicklung weil mich Web-Anwendungen sehr interessieren, und versuche es krampfhaft zu lernen. Beruflich entwickle ich seit vielen Jahren native Windows Anwendungen.

Meine IDE ist PHPStorm. Damit habe ich bis jetzt ein paar etwas umfangreiche Web-Anwendungen erzeugt. Die eingesetzten Technologien sind PHP7 für das backend, twig als renderer für die html seiten, Bootstrap4 für das layout und guzzle für die Kommunikation mit eigenen REST-Server. Für den Seitenaufbau verwende ich das single site Konzept mit Router.

Ich komme mit der gesamten Technologie eigentlich relativ gut klar. Ich finde die AJAX Technologie ziemlich cool. Was mich dabei stört, ich muss für den gleichen Content auf zwei unterschiedliche arten aufbauen.
Als Beispiel: Ich habe eine Tabelle mit 10 Adressen. Um die Tabelle aufzubauen, übergeben ich das Array mit den Adressen an twig und die Tabelle wird aufgebaut.
Auf der Form gibt es einen Button NeueAdresse. Dabei wird ein modales Bootstrap Formular anzeigt um die neue Adresse zu erfassen. Die einfachste art wäre jetzt, beim beenden des modalen Dialogs die Daten per AJAX zu senden und die darunterliegende Form mit der Tabelle neu zu laden. Das Array beinhaltet nun 11 Adressen und wird wie vorher auch über twig aufgebaut.
Bei komplexen Seiten kann ein kompletter reload jedoch Zeitaufwendig sein, wenn z.b. die dahinterliegende Abfrage der benötigten Daten lange dauern.
Die alternative zu einem Reload ist, man würde den 11. Datensatz in der Tabelle z.b. über jQuery hinzufügen. Das funktioniert zwar wunderbar, und ich kann mir ein kompletten reload sparen, der view Bereich änder sich nicht, eigentlich eine coole Sache und sehr schnell.

Was mich dabei stört, ich habe zwei getrennte Technologien für die selber Sache. Bei erstmaligen load verwende ich twig und die Tabelle zu erzeugen, und danach wird sie über jQuery und JavaScript verändert. Es ist ein zusätzliche Programmieraufwand, die Pfleger der Anwendung wird dadurch komplexer und das Gesamtprojekt leidet darunter weil es undurchsichtiger wird.

Gibt es da keine bessere Konzepte?

Gruß James