CakePHP Creare un'applicazione con CakePHP.

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "CakePHP - 101 Creare un'applicazione con CakePHP. massimoi@impronta48.it http://impronta48.it"

Transcript

1 CakePHP Creare un'applicazione con CakePHP

2 Come Installare cakephp 1.3.x 1) Mi collego a https://github.com/cakephp/cakephp/archives/1.3 2) Salvo il file tar.gz 3) Scompatto il file tar.gz nel mio webserver [in aula si trova su www di a22docente - cake- 1.3.tar.gz] /var/www/massimoi/cake 4) Ricordarsi di mostrare i file nascosti! (per l'.htacces)

3 L'Applicazione Cake La nostra APPLICAZIONE si scrive nella cartella app (Ignoro CAKE, PLUGINS, VENDOR) Entro nella cartella APP Copio database.default.php in database.php Modifico i paramentri in database.php Imposto i permessi di scrittura 777 alla cartella app/tmp Verifico collegandomi a che le 3 righe centrali siano OK (verdi)

4 Creazione dei Model Creo i model corrispondenti alle tabelle autori >>> Autore libri >>> Libro ESEMPIO: libro.php <?php } class Libro extends AppModel { var $name='libro';

5 Impostazione dei plurali Imposto i plurali in Italiano, modifico il file app/config/bootstrap.php Inflector::rules('plural', array('rules' => array(), 'irregular' => array('libro'=>'libri', 'autore'=>'autori', ), 'uninflected' => array() ) );

6 Creazione dei Controller Creo i controller autori_controller.php e libri_controller.php ESEMPIO per LIBRI <?php class LibriController extends AppController { var $name='libri'; var $scaffold; } Mi collego a Notare lo SCAFFOLDING (fa automaticamente CRUD)

7 CREO LE RELAZIONI 1) Aggiungo nel MODEL libro $belongsto = 'Autore'; (singolare come la classe) 2) Aggiungo nel MODEL autore $hasmany = 'Libro'; (singolare come la classe) 3) Scoprio che tutto funziona automagicamente con le relazioni

8 CAMPI DI DEFAULT Aggiungo nel MODEL dell'autore $displayfield = 'nome'; così dappertutto l'autore viene identificato con il suo nome

9 Creare una home page e un layout 1) Creo un file app/views/pages/home.ctp e metto il contenuto della home page 2) Creo una pagina statica contatti.ctp 3) Modifico il file di layout. Parto dall'esempio standard che trovo in cake/libs/views/layout/default.ctp che copio nella mia cartella layout!!! NON MODIFICO QUELLO DI CAKE!!!

10 personalizzo il controller e le view 1) Creo nel controller autori_controller il metodo mostra($id) 2) Creo nella cartella /vies/autori/ il file mostra.ctp

11 Url amichevoli (pretty url) NON AMICHEVOLE da=torino&a=milano&datada= URL AMICHEVOLE fa l'operazione di rewriting, quindi ci dev'essere!

12 IL DATABASE Nel file di configurazione del db io devo scrivere il nome del server. 99% delle volte è localhost perchè è sulla stessa macchina del webserver!

13 CONVENZIONI invece che CONFIGURAZIONI Elenco di tutte le convenzioni di cake

14 Esercizio Biblioteca - Autori SPECIFICHE Riscrivere la funzionalità index per gli autori in modo da mostrare la foto dell'autore e il nome sotto la foto (tipo "amici di facebook") Quando faccio click sul nome o sulla foto vado alla pag mostra/id PASSAGGI 1) Nel controller creo una funzione index 2) Legge tutti gli autori dal database 3) Passa alla view (/views/autori/index.ctp) la lista degli autori (id, nome)

15 Controller Autori - mostra //corrisponde a function mostra($id) { $a = $this->autore->findbyid($id); //Dopo la chiamata con $id = 1 // $a appare come segue // ['Autore']['id'] = 1 // ['Autore']['nome'] = manzoni $this->set('autore', $a); }

16 Controller Autori - index function index() { //Non mi serve portare dietro i libri $this->autore->recursive = 0; //leggo dal db la lista degli autori //$l = $this->autore->find('all'); //leggo dal db la lista degli autori ordinata per nome $l = $this->autore->find('all', array('order'=>'nome' ) ); } $this->set('autori', $l);

17 Controller Autori edit passo 1 function edit($id = null) { $this->autore->id=$id; //Se mi stai chiamando prima di aver premuto //submit if (empty($this->data)) { $this->data = $this->autore->read(); } else //hai già premuto submit { $this->autore->save($this->data) }

18 Controller Autori edit - passo2 function edit($id = null) { if (empty($id)) { //Scrivi un errore $this->session->setflash('manca id'); return; } Introduco gestione errori e casi particolari $this->autore->id=$id; //Se mi stai chiamando prima di aver premuto //submit if (empty($this->data)) { $this->data = $this->autore->read(); } else //hai già premuto submit { if ($this->autore->save($this->data)) { $this->session->setflash('salvato Autore'); $this->redirect('index'); } else { $this->session->setflash('salvataggio non riuscito'); } }

19 Controller Autori - delete function delete($id = null) { if (empty($id)) { $this->session->setflash('manca id'); $this->redirect('index'); } if ($this->autore->delete($id)) { $this->session->setflash('cancellato!'); $this->redirect('index'); } else { $this->session->setflash('non trovato e NON cancellato!'); } }

20 Autori / Views / Edit <?php echo $this->form->create('autore');?> <?php echo $this->form->input('id');?> <?php echo $this->form->input('nome');?> <?php echo $this->form->input('data_nascita');?> <?php echo $this->form->input(' ');?> <?php echo $this->form->end('salva');?> Es: Validazione sull' NEL MODEL autore.php var $validate = array ( ' ' => array('rule'=>' ', 'message' => ' not valid', ), Cake usa le caselle più appropriate e fa la validazione!

21 Esercizio Biblioteca - Libri STORIE: 1) Vorrei vedere un elenco di libri con copertina La copertina è in img/libri/id.jpg Ogni libro > Edit / Delete / View 2) Scheda del libro che riporti: Titolo, Copertina, e Autore con Foto e Link alla scheda dell'autore (a partire dal nome e foto dell'autore)

22 Creo un link da un controller ad un altro Sono in libri/mostra.ctp e voglio creare un link a autori/mostra/1 $this->html->link('manzoni', 'mostra/1') mi fa vedere il libro 1 >>> libri/mostra/1 $this->html->link('manzoni','/autori/mostra/1') mi fa vedere l'autore 1 >>> autori/mostra/1 $this->html->link('manzoni', array('controller'=>'autori', 'action'=>'mostra', 1)); Il parametro

23 Gestiamo i prestiti Libri n-1 Autori n-1 Prestiti n-1 Utenti Scelta: scompongo la molti-a-molti in due 1- a-molti

24 Come creo il mio codice Scaffolding genera automaticamente index, edit, add, delete (CRUD) A mano Bake Scrittura del codice guidata

25 Usare Bake 1) Apro un terminale (sotto Win+R cmd) 2) Mi posiziono nella cartella dove c'è il mio cake (cd /var/www/massimoi/cake) Se sono su una cartella di rete (montata) cd.gvfs/a22\ docente\ Sotto linux mi assicuro di aver installato php5- cli Eseguo cake/console/cake bake

26 Pagination

27 Ritocchi Il menu contenga anche utenti e prestiti Scegliere alcuni campi da visualizzare nei prestiti Titolo libro, Utente, DataP, DataR (in quest'ordine) Visualizzare correttamente le tendine dentro il prestito (utente e libro) Data vuota

28 Ricerca Utente - view Aggiungere la possibilità di effettuare la ricerca di tra gli utenti per nome e cognome e filtrare la lista degli utenti Nella view utenti/index.ctp aggiungo il campo per la ricerca lo chiamo q <?php echo $this->form->create('utente', array('action'=>'index')); echo $this->form->input('q', array('label'=>'cerca per nome o cognome') ); echo $this->form->end('cerca');?>

29 Ricerca Utente 2 - controller //Inizializzo le variabili vuote $q=''; $conditions=array(); //Se i campi sono valorizzati //metto nella variabile $q //quello che l'utente ha scritto nel campo q if (!empty($this->data)) { $q = $this->data['utente']['q']; } if (!empty($q)) { $conditions = array('or' => array('cognome LIKE' => "%$q%", 'nome LIKE' => "%$q%") ); } $u = $this->paginate('utente',$conditions);

30 Profilo Utente Aggiungere data di nascita Telefono Visualizzare il datepicker jquery per la data di nascita

31 Esecuzione Profilo Utente Aggiungo i campi al db: -varchar(255), tel varchar(50), data_nascita date tutti accettano null Nelle view aggiungo la gestione di questi campi Edit / Add Index

32 Gestione data di nascita (1) Uso i selettori standard di cake, in ordine italiano (GMA), e con l'anno partenza a 1900 echo $this->form->input('data_nascita', array( 'type'=>'date', 'dateformat'=>'dmy', 'minyear'=>1900 //Utile per le date di nascita ) );

33 Usiamo jquery per la data di nascita La libreria di base si chiama jquery La libreria con le interfacce utente interessanti si chiama jquery UI tutte le info su Le scarico dalla sezione download del sito jqueryui.com e le copio in /app/webroot/js il contenuto della cartella js /app/webroot/css il contenuto della cartella css (ignoro la cartella development-bundle) Richiamo le librerie in views/layout/default.ctp echo $this->html->css('ui-lightness/jquery-ui custom.css'); echo $this->html->script('jquery min.js'); //Include jquery echo $this->html->script('jquery-ui custom.min.js'); Aggiungo datepicker nella views/utenti/edit.ctp <script> $("#UtenteDataNascita").datepicker( ); </script>

34 Attributi del datepicker Data in formato $("#UtenteDataNascita").datepicker( { dateformat: 'yy-mm-dd' }); Primo giorno della settimana sia LUN $("#UtenteDataNascita").datepicker( { dateformat: 'yy-mm-dd', firstday: 1 });

35 Selezione di un elemento con jquery ES: Voglio cambiare lo sfondo a un campo di testo <input id= cognome class= campi /> $(SELETTORE).azione() $('#cognome').css('background-color:red'); ES: Voglio nascondere il campo quando uno ci clicca sopra $('#cognome').hide();

36 Esercizio Parte 4-4 Convertire data prelievo e data restituzione (prestito) in datepicker jquery ui Aggiungere al libro un link che mostri tutti i prestiti in cui è stato coinvolto (ordinati con il più recente in alto) mostrare sia in view che in index Nell'elenco dei libri aggiungere una casella di ricerca per titolo o autore Colorare lo sfondo della cella dei libri (nell'elenco libri) di rosso pallido se il libro è in prestito

37 Aggiungere al libro un link che mostri tutti i prestiti in cui è stato coinvolto (ordinati con il più recente in alto) mostrare sia in view che in index Model >>> Niente da cambiare Controller Agisco sul controller dei prestiti (! non su quello dei libri, perchè voglio vedere un elenco di prestiti, non di libri, e il libro è il parametro) Function stato($idlibro) {...} View app/views/prestiti/stato.ctp Presento una tabella di prestiti (utente, datap, datar) ordinata per datar e ORDINABILE

38 Link Utili Template e Layout Professionali (50$ circa) Programmazione Agile 1) SCRUM from the trenches (SCRUM dalle Trincee) Opensource - d=df3d2fd7d5422e0c2ab257132dcd127a 2) EXTREMEPROGRAMMING.ORG - Extreeme Programming Installed

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2011/2012

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2011/2012 Laboratorio Progettazione Web PHP e MySQL - Lezione 9 Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2011/2012 Architettura di una applicazione Web Browser Web HTTP Server Web PHP Dati View Control

Dettagli

schema riassuntivo del corso di access

schema riassuntivo del corso di access schema riassuntivo del maggio-settembre 2006 Materiale prodotto da Domenico Saggese unicamente come supporto per i suoi corsi. E lecito trattenerne una copia per uso personale; non è autorizzato alcun

Dettagli

www.saggese.it www.domenicosaggese.it Pagina 1 di 10

www.saggese.it www.domenicosaggese.it Pagina 1 di 10 Materiale prodotto da Domenico Saggese unicamente come supporto per i suoi corsi. E lecito trattenerne una copia per uso personale; non è autorizzato alcun uso commerciale o in corsi non tenuti od organizzati

Dettagli

Registrazione nuovo utente. Per registrare un nuovo utente cliccare sul link Registrazione

Registrazione nuovo utente. Per registrare un nuovo utente cliccare sul link Registrazione Manuale Gedos 2 Indice Indice... 3 Il Portale... 4 Registrazione nuovo utente... 5 Primo Logon... 8 Registrazione a Gedos... 9 Accesso ai Servizi... 11 Gestione Donatori... 12 Inserimento nuovo donatore...

Dettagli

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2013/2014

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2013/2014 Laboratorio Progettazione Web PHP e MySQL Andrea Marchetti IIT-CNR 2013/2014 Architettura di una applicazione Web Browser Web HTTP Server Web API Dati Presentation Application Storage PHP e DataBase Quando

Dettagli

INSTALLAZIONE JOOMLA

INSTALLAZIONE JOOMLA INSTALLAZIONE JOOMLA Moltissime volta mi capita (e penso capiti anche a voi) di dover prima di pubblicare un sito farlo vedere al cliente per l ok finale, o magari doverlo fare vedere, ma non avere ancora

Dettagli

www.spaghettibrain.com Manuale di Installazione PHPNuke in Italiano Edizione Visuale By CLA (webmaster@spaghettibrain.com)

www.spaghettibrain.com Manuale di Installazione PHPNuke in Italiano Edizione Visuale By CLA (webmaster@spaghettibrain.com) www.spaghettibrain.com Manuale di Installazione PHPNuke in Italiano Edizione Visuale By CLA (webmaster@spaghettibrain.com) Cosa è PHPNuke Perché Spaghettibrain Cosa Serve per installarlo Installazione

Dettagli

HOME. Servizio Download Dati Geografici. Interfaccia utente

HOME. Servizio Download Dati Geografici. Interfaccia utente HOME Servizio Download Dati Geografici Il servizio download offre all'utente la possibilità di scaricare il dato sia in formato raster sia in formato vettoriale. Per ogni livello informativo che si desidera

Dettagli

Manuale. Gestione biblioteca scolastica by Rosset Pier Angelo is licensed under a Creative Commons

Manuale. Gestione biblioteca scolastica by Rosset Pier Angelo is licensed under a Creative Commons Manuale Gestione biblioteca scolastica by Rosset Pier Angelo is licensed under a Creative Commons Premessa Gestione Biblioteca scolastica è un software che permette di gestire in maniera sufficientemente

Dettagli

Manuale di sviluppo Geecom Scritto da Andrea Pastore. versione 2.1 24/11/2014

Manuale di sviluppo Geecom Scritto da Andrea Pastore. versione 2.1 24/11/2014 Manuale di sviluppo Geecom Scritto da Andrea Pastore versione 2.1 24/11/2014 Capitolo 1: creare un template per Geecom La struttura di un template geecom Creare un template personalizzato Sommario Capitolo

Dettagli

VERIFICA CORSO: MASTER DI PRIMO LIVELLO IN TECNOLOGIE DI SICUREZZA WEB E NETWORKING CODICE CORSO: B22-75-2008-0

VERIFICA CORSO: MASTER DI PRIMO LIVELLO IN TECNOLOGIE DI SICUREZZA WEB E NETWORKING CODICE CORSO: B22-75-2008-0 VERIFICA CORSO: MASTER DI PRIMO LIVELLO IN TECNOLOGIE DI SICUREZZA WEB E NETWORKING CODICE CORSO: B22-75-2008-0 UNITA FORMATIVA: LE TECNOLOGIE WEB LATO CLIENT DOCENTE: DANIELA REMOGNA DATA: 28 APRILE 2008

Dettagli

Accedere alle banche dati da casa Il server PROXY di UniTO

Accedere alle banche dati da casa Il server PROXY di UniTO Accedere alle banche dati da casa Il server PROXY di UniTO 1 IL PROXY DI ATENEO Gran parte delle delle banche dati disponibili sono consultabili anche da casa. Per poter garantire il corretto riconoscimento

Dettagli

Manuale Utente MyFastPage

Manuale Utente MyFastPage Manuale MyFastPage Utente Elenco dei contenuti 1. Cosa è MyVoice Home?... 4 1.1. Introduzione... 5 2. Utilizzo del servizio... 6 2.1. Accesso... 6 2.2. Disconnessione... 7 2.3. Configurazione base Profilo

Dettagli

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2012/2013

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2012/2013 Laboratorio Progettazione Web PHP e MySQL - Lezione 9 Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2012/2013 Architettura di una applicazione Web Browser Web HTTP Server Web API Dati Presentation

Dettagli

DM-Learning MOO. Manuale del Docente

DM-Learning MOO. Manuale del Docente DM-Learning MOO Manuale del Docente DM-Learning MOO è un ambiente virtuale di supporto alle attività didattiche svolte in presenza, ed è gestita da DidatticaMente.net per l I.T.I.S. Zuccante di Venezia

Dettagli

Manuale Utente all uso dell Interfaccia WEB del Cocktail Audio X10 (ver0.9)

Manuale Utente all uso dell Interfaccia WEB del Cocktail Audio X10 (ver0.9) Manuale Utente all uso dell Interfaccia WEB del Cocktail Audio X10 (ver0.9) ATTENZIONE : Assicurarsi che la versione del firmware installata nell X10 sia la R1644 o superiore al fine di poter far funzionare

Dettagli

RepairsLab Manuale Utente. RepairsLab. Manuale Utente

RepairsLab Manuale Utente. RepairsLab. Manuale Utente Pag 1 di 14 RepairsLab Manuale Utente Per RepairsLab 1.0 Autore: Fabrizio Ferraiuolo Indice generale Introduzione...2 Installazione...2 Schermata principale...3 Configurazione...4 Configurazioni Base Dati...5

Dettagli

Posta Elettronica Certificata. Manuale di utilizzo del servizio Webmail Light di Telecom Italia Trust Technologies

Posta Elettronica Certificata. Manuale di utilizzo del servizio Webmail Light di Telecom Italia Trust Technologies Posta Elettronica Certificata Manuale di utilizzo del servizio Webmail Light di Telecom Italia Trust Technologies Documento Interno Pag. 1 di 28 Indice degli argomenti Indice degli argomenti... 2 1 Introduzione...

Dettagli

Web-TV Manuale per l Amministratore

Web-TV Manuale per l Amministratore Web-TV Manuale per l Amministratore Via Trebbo, 88 41053 Maranello (MO) Part. IVA 02707260366 Tel. 0536/944949 Fax. 0536/933156 E-mail: info@leonardomultimedia.com Web: http://www.leonardomultimedia.com

Dettagli

COM_HELLOWORLD_PART4

COM_HELLOWORLD_PART4 COM_HELLOWORLD_PART1 Nel manifest la presenza del tag permette di gestire le versioni incrementali di aggiornamento anche grazie all uso del tag . Le installazioni successive del componente

Dettagli

Manualino d uso di Wordpress per le scuole

Manualino d uso di Wordpress per le scuole Manualino d uso di Wordpress per le scuole AUTORI: fabrizio.benati@certhidea.it VERSIONE DEL DOCUMENTO: scuole_manualino-wordpress_080701.doc Indice Indice...2 1. Amministrazione del sito...3 2. Gestione

Dettagli

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO. 2015 e PARAMETRI2015

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO. 2015 e PARAMETRI2015 COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO. 2015 e PARAMETRI2015 Vicenza, 3 giugno 2015 Gentile cliente, si ricorda che a partire dall aggiornamento PROFIS 2011.1 è stato automatizzato

Dettagli

Esercitazione 8. Basi di dati e web

Esercitazione 8. Basi di dati e web Esercitazione 8 Basi di dati e web Rev. 1 Basi di dati - prof. Silvio Salza - a.a. 2014-2015 E8-1 Basi di dati e web Una modalità tipica di accesso alle basi di dati è tramite interfacce web Esiste una

Dettagli

MAUALE PIATTAFORMA MOODLE

MAUALE PIATTAFORMA MOODLE MAUALE PIATTAFORMA MOODLE La piattaforma moodle ci permette di salvare e creare contenuti didattici. Dal menù principale è possibile: inviare dei messaggi agli altri docenti che utilizzano la piattaforma:

Dettagli

JAVASCRIPT. Tale file è associato alla pagina web mediante il tag