Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [PILLOLA] Iniziamo a sviluppare con Zend_Framework 1.5

    Sviluppare con lo ZendFramework è qualcosa di estremamente semplice, essendo un framework abbastanza flessibile e sviluppato modularmente ci permette di usare dei componenti senza essere obbligati a usarli tutti.

    Di seguito vedremo come sviluppare un semplice sito internet con una schermata principale in pochi piccoli Steps, usando alcuni dei componenti che il framework ci mette a disposizione.

    Per prima cosa vediamo la struttura delle directory:
    codice:
      |_librerie
      |    |_Zend
      |         |_I VARI COMPONENTI ZEND
      |
      |_app
      |     |__controllers
      |               |__IndexController.php
      |               |__ErrorController.php
      |     |__views
      |     |      |__scripts
      |     |             |__index
      |     |             |      |_index.phtml
      |     |             |__error
      |     |__models        |_error.phtml
      |
      |__www
             |_.htaccess
             |_index.php
    In pratica:
    la directory WWW è da trasformare come htdocs/ nella maggior parte degli hosting web, in pratica deve essere l'unica a vedere la luce del web.

    in questa vengono contenuti 2 file
    1) La index, il file che conterrà le direttive per incanalare le richieste al controller
    2) Il file .htaccess nel quale andremo a mettere le direttive Rewrite che porteranno tutte le chiamate verso index.php

    codice:
    .htaccess
    
    RewriteEngine On
    RewriteBase /
    RewriteRule !\.(ico|png|jpg|css|js|gif)$ index.php
    nel file Index.php invece andremo a mettere queste direttive:

    Codice PHP:
    <?php
    /*Diciamo allo script di stampare tutti gli errori.*/
    error_reporting(E_ALL|E_STRICT);
    ini_set('display_errors'1);

    /*settiamo come include path la directory che contiene i file Zend*/
    ini_set('include_path''../librerie');

    /*Includiamo Zend Loader per caricare di volta in volta le classi che ci servono*/
    include_once('Zend/Loader.php');

    /*Carichiamo i primi componenti che ci serviranno*/
    Zend_Loader::loadClass('Zend_Controller_Front');
    Zend_Loader::loadClass('Zend_Db');
    Zend_Loader::loadClass('Zend_Registry');
    Zend_Loader::loadClass('Zend_Config_Ini');

    /*Adesso carichiamo il file di configurazione .ini*/
    $config = new Zend_Config_Ini('../config.ini''offline');

    /*
    Struttura del file .ini
    [offline]
    dbname = prova
    dbhost = 127.0.0.1
    dbusername = unusername
    dbpassword = unapassword
    dbadapter = Mysqli
    debug = true
    */

    /*Creiamo i parametri per la connessione al DB mysql*/
    $db Zend_Db::factory
    (
        
    $config->dbadapter,
        array
        (
            
    'host'        => $config->dbhost,
            
    'username'    => $config->dbusername,
            
    'password'    => $config->dbpassword,
            
    'dbname'    => $config->dbname
        
    )
    );

    /*proviamo a connetterci*/
    try 
    {
        
    $db->getConnection();
    }
    /*ci sono eccezzioni?*/
    catch (Zend_Db_Adapter_Mysqli_Exception $e)
    {
        echo 
    "C'&egrave; stato un errore nella connessione MySQL";
        if(
    $config->debug)
            print 
    ": " $e;
        exit();
    }
    catch (
    Zend_Db_Exception $e)
    {
        echo 
    "C'&egrave; stato un errore nella connessione MySQL";
        if(
    $config->debug)
            print 
    ": " $e;
        exit();
    }

    /*se ci siamo collegati , registriamo le variabili che ci serviranno all'interno delle classi che useremo per reperire dati dal DB*/
    Zend_Registry::set('db'$db);

    /*e anche i parametri di configurazione*/
    Zend_Registry::set('config'$config);


    /*Adesso diamo vita alla struttura MVC*/
    $front Zend_Controller_Front::getInstance();
    $front->setControllerDirectory('../app/controllers');

    /*se throwExceptions è uguale a true, lo script su ogni errore ci dara tutte le informazioni di Debug, sennò se e false e abbiamo un ErrorController configurato, uscirà quella pagina.*/
    $front->throwExceptions($config->debug);

    /*Let's roll*/
    $front->dispatch();

    ?>

  2. #2
    Successivamente dovremo andare a creare il controller IndexController.php

    Codice PHP:
    <?php

    class indexController extends Zend_Controller_Action 
    {
        public function 
    indexAction()
        {
                      
    //$this->view è importante, passa la variabile al View
            
    $this->view->saluto "Hello World";
        }
    }

    ?>
    Facciamo attenzione che il nome della classe deve necessariamente avere il nome della pagina da visualizzare
    i.e.: nomesito.com/chisono avrà un controller ChisonoController nel file PHP app/controllers/ChisonoController.php, (dda notare pure le lettere maiuscole, e che la classe deve essere figlia di Zend_controller_action)

    Per prendere le variabili che in index.php abbiamo salvato con Zend_registry all'interno della classe, tipo l'oggetto di connessione al DB, aggiungeremo alla classe IndexController ciò:

    Codice PHP:
    <?php

    $db 
    Zend_Registry::get('db');

    ?>
    Successivamente andiamo a vedere la pagina /app/views/scripts/index/index.phtml
    che conterrà questo codice
    codice:
    <?php print $this->saluto; ?>
    che stamperà sulla pagina "Hello World".

    Se vogliamo implementare la pagina nomesito.com/chisono ... andremo a creare questo percorso /app/views/scripts/chisono/index.phtml

    Se invece abbiamo tipo, parti della pagina comuni a tutti i layout delle pagine, tipo l'header del sito, mettiamo un file header.phtml in /app/views/scripts/header.phtml
    e nell'index.phtml delle pagine metteremo

    codice:
    <?php print $this->render('header.phtml'); ?>

  3. #3
    grazie mille, stavo proprio cercando questo. . .eri mica presente al phpday?
    http://www.trustweb.it - Web Development - Design 2D/3D - SEO & SEM

    Twitter http://twitter.com/#!/TrustWeb
    LinkedIn http://it.linkedin.com/in/trustweb

  4. #4
    utilissima, serviva anche a me! grazie!
    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

  5. #5
    Ok allora la continuo :P
    Non c'ero al PHPDay :'(

    Faccio delle considerazioni sul Zend_Config_Ini, in pratica noi inizialmente lo abbiamo caricato con
    Codice PHP:
    <?php

    $config 
    = new Zend_Config_Ini('config.ini''offline');

    ?>

    //e il file era cosi
    [offline]
    dbname = prova
    dbusername = unusername
    dbpassword = unapassword
    debug = true
    //e cosi via...
    //adesso pensiamo se il sito va online e vogliamo disabilitar solo il debug mentre tutti i dati restano uguali....
    //poche righe piu in basso nel file .ini mettiamo :

    [online : offline]
    debug = false

    //per chi mastica il C++ capirà che i ':' sono una forma per dire "extends" quindi noi adesso 
    //stiamo dicendo a Config_Ini che il gruppo di impostazioni "online" estende "offline" e quindi 
    //tutte le direttive che Config_Ini trovera in comune in "online" le sovrascriverà, mentre invece 
    //le altre le prenderà direttamente da "offline" , cambiando però gli argomenti del costruttore di 
    //ZEnd_Config_ini

    $config = new Zend_Config_Ini('config.ini', 'online');
    Successivamente andiamo a creare il nostro "ErrorController" , in pratica , quando "$front->throwExceptions(false), avrà false come argomento, lo Zend Framework cercherà un error controller con cui stampare a video il messaggio d'errore scelto da noi

    creiamo quindi in "app/controllers" il file "ErrorController.php"

    Codice PHP:

    <?php

    class ErrorController extends Zend_Controller_Action 
    {
        public function 
    errorAction()
        {
            
    $this->view->Messaggiodierrore "C'&egrave; stato un errore, riprova piu tardi.";
        }
    }

    ?>
    Quindi , andiamo a creare in "app/views/scripts/error" il file "error.phtml",
    e andiamoci a mettere dentro

    codice:
    <?php print $this->Messaggiodierrore; ?>
    e vedremo stampato a video , quando ci sarà un errore:

    C'è stato un errore, riprova piu tardi.


    ...la prossima e sulla gestione delle action e del Routing di Zend_Framework più tardi :P

  6. #6
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Ciao,
    ho scaricato la versione 1.5.2 di zend framework da http://framework.zend.com/download, scompattando l'archivio all'interno sono presenti 3 cartelle, demos, tests e library.
    Dove si trovano l'index e l'htaccess di cui parli?
    Grazie

    Ciao

  7. #7
    Utente di HTML.it L'avatar di pgm
    Registrato dal
    Apr 2002
    Messaggi
    1,281
    quelli li devi creare tu.

    la versione che scarichi contiene appunto la cartella library che è l'insieme delle classi che compongono ZF; test e demos non ti servono ai fini della tua applicazione, ma solo come "studio"

  8. #8
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Altre 2 domande:

    1) Dove va salvato il file di configurazione?

    2) Ho studiato abbastanza con attenzione il sistema di configurazione del framework 'Taste' di html.it. Zend Framework si basa sullo stesso sistema o simile per cui ogni singola classe è configurabile tramite il file di configurazione?

    Grazie

  9. #9
    Originariamente inviato da Razorblade
    Altre 2 domande:

    1) Dove va salvato il file di configurazione?

    2) Ho studiato abbastanza con attenzione il sistema di configurazione del framework 'Taste' di html.it. Zend Framework si basa sullo stesso sistema o simile per cui ogni singola classe è configurabile tramite il file di configurazione?

    Grazie
    il file di configurazione va dove vuoi tu, però è consigliabile metterlo fuori da "htdocs" perchè essendo un INI o un XML viene stampato :P

    ZF non ha veramente niente da configurare tramite file di configurazione :\ ci fai tutto a mano, quello che va configurato lo decidi te, per salvare parametri: \

  10. #10
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    @n0t
    Ti ringrazio di aver iniziato questo post, davvero molto utile.
    Volevo chiedere a te o a chi vorrà rispondere, attualmente sto affettuando dei tests in locale,
    ho creato una directory 'zend' dove temporaneamente ho inserito anche library e apps ( in un eventuale futuro progetto in produzione saranno esterne ).

    Ho un problema con rewrite engine che mi reindirizza si all'index.php, ma non a quello della dir 'zend'. Come devo modificare l'.htaccess di conseguenza?

    Ho provato con

    Codice PHP:
    RewriteRule !\.(ico|png|jpg|css|js|gif)$ zend/index.php
    RewriteRule 
    !\.(ico|png|jpg|css|js|gif)$ ./zend/index.php
    RewriteRule 
    !\.(ico|png|jpg|css|js|gif)$ /zend/index.php 
    ( uno per volta ovviamente ) ma non va.
    Grazie

    PS.
    Mi piacerebbe sapere come funzionano i templete engine all'interno di zend framework e se è possibile utilizzare plugin esterni tipo smarty.
    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.