Local Storage

Mi sono molto affezionato ad Yii,

tuttavia mi chiedo se possa essere lo strumento più adatto per il progetto che sto seguendo

o se in questo caso sia più conveniente adottare qualche altro strumento e quale.

Ciò che devo realizzare è il classico crud di una tabella.

La maschera viene visualizzata sui moderni smartphone.

E fin qui… yii è perfetto.

Ma la connessione ad internet non è garantita,

questo crud deve poter funzionare anche in assenza di connessione internet mediante local storage

per poi sincronizzarsi in seguito appena la connessione torna disponibile.

Eccomi quindi qui sul forum a chiedere consigli idee sulla strada più veloce.

Come implementeresti la specifica?

Esiste magari qualche framework / plugin più specifico?

Io ho usato Phonegap per progetti simili.

L’app nel telefono salva in locale i dati da inserire (phonegap ti fornisce accesso ad sqlite di android o iphone) e quando la connessione è up invia tutto a Yii.

Nell’applicativo server c’è un’interfaccia RESTful (che al momento è un controller) e tramite quella faccio dialogare Smartphone e Yii.

Anche se il tutto sembra molto complicato in realtà non lo è eccessivamente, per usare phonegap devi sicuramente avere un’ottima conoscenza di Javascript.

ciaociao

Grazie Nicola,

non volevo arrivare a sviluppare un’app fruibile solo da smartphone, anche se potrebbe essere un’idea.

Mi piacerebbe rimanere nel web perché l’applicazione potrebbe anche essere fruita su normali computer.

Mi piacerebbe riuscire a sviluppare un’applicazione che usi una tecnologia simile a GMail Offline.

In passato ne ho sviluppata una in javascript,

ma il codice fa in fretta a trasformarsi in spaghetti code

Presumo esista qualche soluzione per creare progetti più o meno complessi che gestiscano tale sincronia

Su phonegap è comunque Javascript quindi replicabile su browser.

Il problema è che con phonegap hai delle API che ti permettono di capire quando la connessione è up, su un browser normale credo che dovrai implementartela da solo una cosa simile.

Risolto quello poi puoi usare cose tipo plugin jquery per gestire un po’ più agevolmente lo storage dei dati in locale.

Se su Yii hai poi un’interfaccia RESTful inviare i dati da JS a Yii diventa poi piuttosto easy.

Appena ho finito di scrivere ho trovato questo

E bravo Nicola!

Un bel + non te lo leva nessuno

Questa strada merita di essere approfondita.

Grazie

Io invece appena ho finito di scrivere, sono stato pervaso da un altro dubbio…

Con soluzioni tipo PhoneGap le pagine html e gli script js sono storate localmente,

mentre con una soluzione web based dovrò implementare tutto il crud su un’unica pagina?

Con Phonegap ti disegni l’interfaccia dell’app in HTML e le funzioni in Javascript e HTML + Javascript diventano il codice che risiede nell’app.

Ci sono poi vari approcci, io ho usato spesso JqueryMobile per far apparire tutto molto mobile :)

Per fare come dici tu, in un browser, dovresti più che altro scrivere un’estensione di firefox o chrome, in qualche modo l’interfaccia offline devi averla in locale, no?

Ripeto: Io vorrei arrivare a costruire un crud che sfrutti una tecnologia simile a GMail Offline,

mantenendo una certa pulizia di svluppo per evitare di arrivare a programmare spaghetti code

Questo genere di implementazioni, inevitabilmente richiedono molto codice javascript

Il problema di sviluppare decentemente applicazioni complesse è sentito.

Infatti avevano creato soluzioni tipo backbonejs

Secondo me esisterà qualche sorta di loader che semplifichi il caricamento di tutte le pagine.

eh appunto gmailoffline è un’estensione

Non ho capito se hai trovato una soluzione al tuo problema Giancarlo. Puoi dirci qualche cosa in più sull’avanzamento dei lavori? Ma sopratutto, è possibile far girare php su android? Non credevo si potesse. In questo caso la risposta alla tua domanda iniziale è NO: non puoi far girare yii su uno smartphone. La tua soluzione va cercata in un altra strada.

Bè si questo lo davo per scontato.

Non è che puoi caricare PHP, Apache e MySql su androdid (cioè in realtà puoi ma è una cosa molto smanettonica :D)

@sensorario ciò che devo realizzare è una web application (e quindi in grado di lavorare sia su pc che su smartphone) con supporto Local Storage. Yii lo userei ovviamente solo per la realizzazione dell’interfaccia REST.

Mentre sul device di turno verrebbe caricata la sola pagina web autonoma.

Praticamente anche in caso di perdita della connessione, la pagina mediante l’uso di local storage e di javascript (in quantità massiccia) riesce a far lavorare l’utente offline.

Poi appena torna su lo connessione il database viene sincronizzato.

Ho già implementato una soluzione del genere in passato, funziona bene.

A patto che ci sia la connessione iniziale per caricare la prima volta la pagina, lo script e il db sul device.

Quello che non mi è piaciuto dell’esperienza precedente è che il codice javascript si complica facilmente.

O perlomeno non ho trovato una soluzione decente per dare un pò di ordine e pulizia al codice javascript.

So che esistono parecchi framework javascript, ma non ne ho trovato ancora uno bello, funzionale, completo e rapido da imparare. E’ anche vero che non li ho ancora provati tutti. Per questo ho scritto sul forum, per condividere qualche altra esperienza.

Per ottenere la soluzione di questa equazione:

Yii : PHP = xxx : Javascript

Io partirei da jQuery. E’ facile da usare. Puoi, al limite, farti qualche plugin e creare l’interfaccia giusta per il tuo client.

conosci/ete qualche UI Builder open source tipo:

http://www.linb.net/VisualJS/UIBuilder.html

?

Mmm a me l’approccio pare un po’ strano.

Mi chiedo, come fai a salvare l’interfaccia html delle tue pagine per poterle riproporre poi offline?

L’ho spiegato prima:

In pratica ti colleghi su www… e carichi la pagina, poi a quel punto puoi anche spegnere la connessione ed usare la web aplication. Quando ritiri su la connessione, sincronizzi i dati.

Il giorno dopo stessa cosa. Ti colleghi a www… carichi la pagina e poi la usi anche senza connessione.

E’ logico poi come dicevi tu che una volta realizzato il tutto, si può anche mettere html, javascript su smartphone con PhoneGap per fruire dell’app sempre e comunque anche senza connessione iniziale.

Ma comunque non cambia la problematica che ho di voler riuscire a sviluppare applicazioni potenti in javascript velocemente e tenendo il codice pulito

Io chiedevo dove salvi la pagina che carichi!

Come dici tu ti affidi alla cache del browser se non ho capito male, ho capito male?

Un funzionamento del genere a me suona molto "strano"!!

Comunque per Javascript affidati a jQuery e vivrai sereno!

Hai capito bene ciò che voglio fare: affidarmi alla cache del browser.

Io posso capire i local storage. Ma non capisco il perché della cache. Tu ogni giorno hai la necessità di scaricare una o più pagine html? Se si, vorrei capire il perché usare la cache è una soluzione, certo, ma se ne potrebbero trovare di altre. Per esempio, quella di avere una applicazione web locale che si interfaccia al web solo ed esclusivamente per l’allineamento del db.