Questo progetto symfony, basato su symfony 1.4 e Propel 1.5, è stato creato a scopo didattico, per una presentazione tenuta inizialmente per il PUG Roma e poi ampliata per il phpDay. Lo scopo di questo codice è in generale mostrare come integrare correttamente Javascript e PHP, con particolare riferimento a symfony e jQuery. Il progetto mostra un semplicissimo e-commerce, da cui il nome: sfjqec è formato da sf (symfony) + jq (jQuery) + ec (e-commerce).
In estrema sintesi, questo progetto mostra come integrare correttamente Javascript e PHP, usando AJAX. I passi sono i seguenti:
- scrivere l'applicazione come se Javascript non esistesse
- legare alcuni eventi (tipicamente click di link e submit di form) a delle funzioni Javascript
- ciascuna di queste funzioni Javascript richiama uno script PHP, tramite AJAX
- al successo della chiamata AJAX, richiama un'altra funzione Javascript, che si occupa di manipolare il DOM
Nello specifico di jQuery e symfony, i passi si traducono nel seguente modo:
- scrivere il controller normalmente
- scrivere un file Javascript che usi l'evento
ready()
di jQuery e che faccia ilbind
dei click e dei submit necessari - usare l'evento passato da
bind
nella funzione Javascript per estrarre i riferimenti necessari dal DOM - nel controller, effettuare le necessarie modifiche (spesso basta modificare i redirect, in modo che NON siano effettuati per le richieste AJAX)
- nella vista, aggiungere un file del tipo
NomeAzioneSuccess.json.php
- di nuovo nel file Javascript, scrivere la funzione che deve manipolare il DOM,
basandosi sulla variabile
result
, che a questo punto contiene un oggetto JSON, che jQuery ricava dal codice della vista del punto precedente
A questo punto il mio consiglio è quello di analizzare i passi precedenti, tenendo sott'occhio il codice di questo progetto, in particolare il controller e il file js.
This symfony project, based on symfony 1.4 and Propel 1.5, has been created for learning purpose, for a presentation held a first time forPUG Roma and then, in a wider format, for phpDay. The purpose of this code is showing how to integrate in a proper way Javascript e PHP, with specific references to symfony and jQuery. The project shows a very simple e-commerce site, so it's called "sfjqec": sf (symfony) + jq (jQuery) + ec (e-commerce).
The correct way to integrate Javascript and PHP, with AJAX, is divided in 4 steps:
- write app as if Javascript wouldn't exist
- tie some events (link clicks and form submits, tipically) to Javascript functions
- each of such functions recall a PHP script, via AJAX
- when AJAX call succeeds, Javascript calls another function, that deals with DOM manipulation
With jQuery and symfony, the steps are translated like follow:
- write a standard controller
- write a Javascript file using jQuery's
ready()
event, doing abind
of clicks and submits, where needed - use event passed by
bind
in Javascript function and extract needed references from DOM - in the controller, do the needed adaptations (often all you need is to change redirects, so they are NOT executed for AJAX requests)
- in the view, add a file like
ActionNameSuccess..json.php
- again in Javascript file, write a function to manipolate DOM, based on
result
variabile, that is currently containing a JSON object, elaborated by jQuery from the view
My advice is to analyze those steps, while looking to project code, mainly the controller and the js file.