CakePHP Creare un'applicazione con CakePHP.

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

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

Ambiente Virtuale Inclusivo per la Persona Autistica MANUALE OPERATORE. Release 1.0-13/10/09. Copyright Lynx 2009 http://www.lynxlab.

Ambiente Virtuale Inclusivo per la Persona Autistica MANUALE OPERATORE. Release 1.0-13/10/09. Copyright Lynx 2009 http://www.lynxlab. MANUALE OPERATORE Release 1.0-13/10/09 Copyright Lynx 2009 http://www.lynxlab.com Indice generale MANUALE OPERATORE...1 1.1 Definizioni...3 1.2 Ambienti...3 1.3 Release e copyright...3 2. Utenti...4 2.1

Dettagli

Gestione Orario Lezioni: Schema del Database

Gestione Orario Lezioni: Schema del Database Gestione Orario Lezioni: Schema del Database corsi corso studenti studente anno anno docente orario id corso giorno ora1 docenti docente dipartimento email ora2 aula aule aula capienza 1 Gestione Orario

Dettagli

Progetto ittorario Anno scol. 2013-2014

Progetto ittorario Anno scol. 2013-2014 PROGETTO ittorario Scopo: Creazione di una pagina web che mostri l orario di un docente, della classe della materia o dell aula a discrezione dell utente. Sviluppatori: Progetto sviluppato dalla classe

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

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

PROGRAMMA DEL CORSO MASTER WEB DEVELOPER

PROGRAMMA DEL CORSO MASTER WEB DEVELOPER PROGRAMMA DEL CORSO MASTER WEB DEVELOPER Il corso Master Web Developer con Certificazione internazionale Adobe Dreamweaver prepara lo studente a entrare nel mondo dello sviluppo Web (blog, siti, portali).

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

2. Costruire un database con Apache, PHP e MySql

2. Costruire un database con Apache, PHP e MySql 2. Costruire un database con Apache, PHP e MySql Lo scopo di questa esercitazione è realizzare un server web e costruire un database accessibile attraverso Internet utilizzando il server Apache, il linguaggio

Dettagli

Lezione 1. Joomla 2.5

Lezione 1. Joomla 2.5 Lezione 1 Joomla 2.5 Joomla: introduzione Joomla è un cms (content managemente system) opensource. In pratica è un software che permette di realizzare siti web dinamici (l utente interroga il server, il

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

Il linguaggio PHP. Parte I Introduzione. Paolo Milazzo

Il linguaggio PHP. Parte I Introduzione. Paolo Milazzo Il linguaggio PHP Parte I Introduzione Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it A.A. 2010/2011 Paolo Milazzo (Università di Pisa)

Dettagli

BASI DI DATI http://www.diee.unica.it/~giacinto/bd. Cos è il PHP. Cos è il PHP. Esercitazione su PHP & MySQL

BASI DI DATI http://www.diee.unica.it/~giacinto/bd. Cos è il PHP. Cos è il PHP. Esercitazione su PHP & MySQL Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Contatti BASI DI DATI http://www.diee.unica.it/~giacinto/bd Esercitazione su PHP & MySQL! Roberto Tronci! e-mail: roberto.tronci@diee.unica.it!

Dettagli

ESERCIZI. Realizzare un progetto PHP che mostri il contenuto di una. messaggio a piacere) in un elemento psenza usare l operatore di concatenazione.

ESERCIZI. Realizzare un progetto PHP che mostri il contenuto di una. messaggio a piacere) in un elemento psenza usare l operatore di concatenazione. PHP COSTRUTTI DEL LINGUAGGIO Realizzare un progetto PHP che produca una pagina HTML il cui contenuto sia un elemento di tipo h1che presenti il messaggio Ciao Mondo. Si svolga l esercizio con una sola istruzione.

Dettagli

Laboratorio di sistemi Web Application in Php5 Php

Laboratorio di sistemi Web Application in Php5 Php Applicazioni web con Xampp, Php5 e NetBeans 6.5 (Windows) Vogliamo ora riscrivere a titolo di prova un'applicazione web precedentemente scritta in Java (si legga l'articolo all'indirizzo http://www.mauriziocozzetto.net/pdf/dao_mysql.pdf).

Dettagli

UNIVERSITÀ DEGLI STUDI DI FIRENZE. Relazione elaborato di progettazione e produzione multimediale

UNIVERSITÀ DEGLI STUDI DI FIRENZE. Relazione elaborato di progettazione e produzione multimediale UNIVERSITÀ DEGLI STUDI DI FIRENZE Relazione elaborato di progettazione e produzione multimediale AllPainters.Net SISTEMA PER LA GENERAZIONE DI SITI GRATUITI PER PITTORI Autori: - Bandini Roberto - Ercoli

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

Corso di Web Programming

Corso di Web Programming Corso di Web Programming 8. PHP Parte I Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea in Informatica Applicata A.A. 2010/2011

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

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

Creazione e gestione di indagini con Limesurvey. Sito online: www.limesurvey.org/en/

Creazione e gestione di indagini con Limesurvey. Sito online: www.limesurvey.org/en/ Creazione e gestione di indagini con Limesurvey Sito online: www.limesurvey.org/en/ Cos è Limesurvey? Il Software Limesurvey è un'applicazione open source che consente ai ricercatori (o a chiunque voglia

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

OwnCloud 8 su rete lan aziendale (una specie di Gdrive privato)

OwnCloud 8 su rete lan aziendale (una specie di Gdrive privato) Augusto Scatolini (webmaster@comunecampagnano.it) (a.scatolini@linux4campagnano.net) (campagnanorap@gmail.com) Miniguida n. 216 Ver. febbraio 2015 OwnCloud 8 su rete lan aziendale (una specie di Gdrive

Dettagli

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