Raccogliere Dati Da Una Form.

Ciao a tutti…

ho una domanda… stupida magari ma non ho trovato una risposta…

Allora "le operazioni CRUD sono permesse solo agli utenti registrati". Se io ho una form però che deve può essere compilata da qualunque utente che sta visitando il sito e che voglia contattarmi… come posso fare a salvare questi dati?

Insomma vorrei che anche chi non è registrato al sito possa compilare questa form e raccogliere i dati in una tabella nel DB (MySQL).

Grazie mille a tutti!

La action "admin" è solo per utenti registrati. Ma tu puoi creare tutte le action che vuoi con tutti i form che vuoi che salvano tutto quello che vuoi nel DB.

Ciao!

Grazie!!

Però ancora non mi è chiara una cosa… come e dove la chiamo sta action, che potrebbe essere proprio la actionCreate che si trova nel controller e che ho creato con gii con crud generatioin… giusto?

In pratica una pagina del menù principale del sito che contiene una form (la pagina dei contatti insomma)… alla pressione del tasto di submit vorrei che salvassero i dati della form… ma non capisco come collegare questa form con l’azione create di cui parlavo sopra…

Devo farlo dal file SiteController.php?

Grazie ancora!

Allora… devo proprio dire che non capisco proprio niente… sono sempre più confuso dopo aver letto tutta la roba che ho letto.

Volevo modificare la pagina contact dell’esempio testdrive in modo che alla pressione del tasto submit mi inserisse i dati nel DB…

Ci sono riuscito creando una tabella nel db,

ho modificato il model in modo che diventi di tipo CActiveRecord, poi ho usato la crud generation di gii,

poi nel file layout/main.php ho fatto puntare l’indirizzo del menù contact su contact/create

Così mi appare la stessa form che mi appare quando sono loggato come admin e riesco a inserire i dati… ma non credi si faccia così.

Se no ci sono riuscito modificando l’action della pagina contact con alla fine un bel $model->save(); nel siteController.php… ma non credo sia giusto nemmeno fare così…

Insomma non so come fare…

Poi quando fai crud generation ti crea una cartella con il nome della view e dentro altri file… è un casino.

Chi mi fa un pò di chiarezza?

Devi rispettare il pattern MVC,

altrimenti fai solo casino

M-Model

V-View

C-Controller

controllers\SiteController.php (controller… le varie action es. create avranno a loro volta le loro viste)

views\site\ (tutte le view inerenti al SiteController)

models (trovi i modelli dell’applicazione).

Rispetta questo schema.

Non è casino, è ordine. Tu probabilmente ti sei sempre interfacciato al php fatto a mano e senza pattern. Yii è un framework che utilizza diversi design pattern. In pratica si tratta di soluzioni a problemi noti e ben formalizzati. Come dice st4nny, yii è un anche un framework MVC che significa che separa il contesto della logica di business dalla vista. Non razzolare a caso. Spendi un po’ di tempo a leggere il manuale, e ti si aprirà un mondo.

Considera che il codice che genera gii e’ solo un esempio, sentiti libero di modificare.

Trasformare il form contatta modificando il model e facendo save e’ una buona soluzione.