Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Ampliamo la nostra applicazione

Progettiamo un'applicazione più complessa ampliando quella già creata in precedenza
Progettiamo un'applicazione più complessa ampliando quella già creata in precedenza
Link copiato negli appunti

Vista la semplicità con la quale è possibile realizzare applicativi web-based con Symfony, proviamo ora a implementare una piccola estensione della rubrica appena vista, con una base dati leggermente più complessa e rappresentata nella figura sottostante.

Figura 9: La nuova base dati
La nuova base dati

Seguiamo i passi illustrati nella lezione dedicata all'installazione.

  1. Copiamo la cartella sf_sandbox in c:wampwww e rinominiamo la directory in sf_rubrica2;
  2. apriamo il file sf_rubrica2configpropel.ini e sostituiamo nelle variabili propel.project e propel.output.dir la stringa sf_sandbox con sf_rubrica2;
  3. apriamo il file sf_rubrica2configproperties.ini e sostituiamo nella variabile name la stringa sf_sandbox con sf_rubrica2;
  4. apriamo il file sf_rubrica2configschema.yml ed includiamo il seguente codice:

Listato 21: Schema in YAML

propel:
  nazione:
    id: ~
    nome: { type: varchar(255), required: true }
    created_at: ~
  provincia:
    id: ~
    nazione_id: ~
    nome: { type: varchar(255), required: true }
    created_at: ~
  comune:
    id: ~
    provincia_id: ~
    nome: { type: varchar(255), required: true }
    created_at: ~
  contatto:
    id: ~
    comune_id: ~
    nome: { type: varchar(255), required: true }
    cognome: { type: varchar(255), required: true }
    data_nascita: { type: date }
    telefono: { type: varchar(20), required: true }
    cellulare: { type: varchar(20)}
    email: { type: varchar(255) }
    created_at: ~

e salviamolo;

  1. apriamo una shell DOS, portiamoci all'interno della directory c:wampwwwsf_rubrica2 e lanciamo i seguenti comandi in successione:
symfony propel:build-model
symfony configure:database "mysql:dbname=symfony_project;host=localhost" root mypassword
symfony propel:build-sql
symfony propel:insert-sql
symfony propel:build-forms
symfony propel:generate-module --non-verbose-templates --with-show frontend nazione Nazione
symfony propel:generate-module --non-verbose-templates --with-show frontend provincia Provincia
symfony propel:generate-module --non-verbose-templates --with-show frontend comune Comune
symfony propel:generate-module --non-verbose-templates --with-show frontend contatto Contatto
symfony cache:clear

Il gioco è fatto: l'applicazione rubrica è ora disponibile, nei suoi moduli Nazione, Provincia, Comune e Contatto ai seguenti indirizzi:

Prima di poterla utilizzare però è necessario aggiungere un metodo alle classi Nazione, Provincia, Comune e Contatto che si trovano nella directory sf_rubrica2/lib/model per consentire di convertire un oggetto delle rispettive classi in stringa. Questo metodo viene utilizzato in fase di inserimento di un record dal momento che Symfony non è capace, a priori, di effettuare la conversione sopra citata.

Le righe riportate di seguito vanno aggiunte ai file Comune.php, Nazione.php, Provincia.php e Contatto.php

Listato 22.1: Funzione __toString da aggiungere alle classi del model

public function __toString()
{
  return $this->getNome();
}

Il file Comune.php, ad esempio, dovrebbe diventare così:

Listato 22.2:Il file Comune.php modificato

<?php
class Comune extends BaseComune
{
        public function __toString()
        {
                return $this->getNome();
        }
}

L'applicativo così realizzato funziona perfettamente e consente l'inserimento, la modifica, la consultazione e l'eliminazione di una nazione, di una provincia collegata ad essa, di un comune appartenente ad una provincia e di un contatto legato ad un comune.

Figura 10: Pagina di Inserimento dei Contatti
Pagina di Inserimento dei Contatti

Ti consigliamo anche