Visualizzazione dei risultati da 1 a 10 su 12

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Quote Originariamente inviata da Al_katraz984 Visualizza il messaggio
    $form = new view( 'user-add-form' );

    // se qualcuno ha inviato dati dal form "user-add"
    if ( isset( $_POST['user-add-form-submit'] ) ) {
    // li valido tutti
    $fv = new formValidator();
    $fv->validateEmpty( 'email', 'The field [email] is required' );
    $fv->validateEmpty( 'password', 'The field [password] is required' );

    // se ci sono errori
    if ( $fv->checkErrors() ) {
    // creo il messaggio di errore
    $message = new view( 'message', $fv->displayErrors(), array( 'class'=>'error-message' ) );
    // lo attacco al form
    $form->message = $message;
    } else {
    // se non ci sono errori
    // inserisco i dati nella tabella
    $this->mapper->insert();

    // creo il messaggio di inserimento avvenuto con successo
    $message = new view( 'message', $this->mapper->getMsg(), array( 'class'=>'service-message' ) );
    // lo attacco al form
    $form->message = $message;
    }
    }

    // aggancio il form alla vista globale
    $this->view->content = $form;
    }

    [/php]
    Non so veramente come ringraziarti ! :-)

    Sarebbe sempre meglio avere una classe Modello (astratta) ed estenderla per ogni specifica tabella del DB, vero?
    Sarebbe meglio anche avere una classe Controller ed estenderla per ogni specifica pagina, cosa ne pensi?

    L'unica perplessità che mi rimane è: meglio utilizzare una classe per gestire la vista, vero?
    Nell'esempio che sto studiando e plasmando a mio uso, la vista la organizzo in questo modo:
    All'interno del controller ho un metodo:

    codice:
    private function  renderPagina($pagina,$titolo){
            global $base;//indirizzo base della pagina
            
            $pagina= preg_replace($this->getPatrone("head"), file_get_contents("vista/head.php"), $pagina);
            $pagina= preg_replace($this->getPatrone("titolo"), $titolo, $pagina);
            $pagina= preg_replace($this->getPatrone("menu"), file_get_contents("vista/menu.php"), $pagina);
            $pagina= preg_replace($this->getPatrone("strato_inserisci"), file_get_contents("vista/strato_inserisci.php"), $pagina);
            
            $pagina= preg_replace($this->getPatrone("STRATO_SCRIVI_DOCUMENTO"), file_get_contents("vista/strato_scrivi_documento.php"), $pagina);
            $pagina= preg_replace($this->getPatrone("MESSAGGIOINSERIMENTOFILE"), "File scritto", $pagina);
            //  #MESSAGGIOINSERIMENTOFILE#
            //#MESSAGGIOINSERIMENTORECORD#
            $pagina= preg_replace($this->getPatrone("PIEDI"), file_get_contents("vista/piedi.php"), $pagina);
            $pagina= preg_replace($this->getPatrone("BASE"), $base, $pagina);
            echo $pagina;
        }
    Il metodo getPatrone($stringa) è questo:
    codice:
        private function getPatrone($nome){
            $nome="/\#".strtoupper($nome)."\#/ms";
            return $nome;
        }
    I file della vista sono tipo questo:
    inserisci.php
    codice:
    <!DOCTYPE html>
    <html lang="es">
      #HEAD#
      <body>
        <div class="container">
          #MENU#
          #STRATO_INSERISCI#
          #PIEDI#
        </div> 
      </body>
    </html>
    []
    strato_inserisci.php
    codice:
    <form enctype="multipart/form-data" action="#BASE#scrivi_documento" method="post" id="formInserimento">
        <input type="text" placeholder="nome" name="nome" required="">
         <input type="text" placeholder="inserisci le etichette separate da una virgola" name="etichette" required="">
    <input type="text" placeholder="inserisci data" name="data">
    <input type="file" placeholder="inserisci il file" name="immagine" required="">
    <input type="submit" value="Registra" id="bottoneRegistra">
    </form>
    Il sito è piccolo, mi rendo conto che in questo modo vengono effettuate operazioni innecesarie di sostituzione.

    Non riesco a figurarmi nello specifico esempio che hai fatto, come strutturare la classe view:
    $message = new view( 'message', $this->mapper->getMsg(), array( 'class'=>'service-message' ) );

    Grazie per la pazienza e sopportazione! ;-)

    Roberto

  2. #2
    Quote Originariamente inviata da robynosse Visualizza il messaggio
    Sarebbe sempre meglio avere una classe Modello (astratta) ed estenderla per ogni specifica tabella del DB, vero?
    quando possibile una classe astratta che raggruppa le funzioni comuni sarebbe sempre meglio.. l'importante è concretizzare l'estensione solo da abstract (Dependency inversion principle)


    Sarebbe meglio anche avere una classe Controller ed estenderla per ogni specifica pagina, cosa ne pensi?
    certo, tutti i controller fanno bene o male le stesse cose quindi abstaction!

    L'unica perplessità che mi rimane è: meglio utilizzare una classe per gestire la vista, vero?
    Nell'esempio che sto studiando e plasmando a mio uso, la vista la organizzo in questo modo:
    All'interno del controller ho un metodo:
    al di là del codice, la vista è gestita in mille modi diversi, c'è chi vuole usare "{field}" notazioni strane oppure ":field" o "@section bla bla" quindi se ne trovano di tutti i colori..

    Io sono abbastanza purista e preferisco mantenere i soliti "echo $field;" all'interno delle viste.. non a caso PHP è esattamente quello che dovrebbe fare


    Non riesco a figurarmi nello specifico esempio che hai fatto, come strutturare la classe view:
    $message = new view( 'message', $this->mapper->getMsg(), array( 'class'=>'service-message' ) );
    semplicemente nel costruttore della mia classe per le viste posso pre-impostare i dati di creazione della vista

    Codice PHP:
    public function __construct$template$content$args ); 
    è un modo per velocizzare la scrittura altrimenti sarebbe:
    Codice PHP:
    $view = new view'template' );
    $view->props = array( 'class'=>'index' );
    $view->content 'Contenuto'
    Questa volta, più che un voto.. è favoreggiamento.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Codice PHP:
    public function __construct$template$content$args ); 
    è un modo per velocizzare la scrittura altrimenti sarebbe:
    Codice PHP:
    $view = new view'template' );
    $view->props = array( 'class'=>'index' );
    $view->content 'Contenuto'
    Grazie degli esempi/spiegazioni e per il tempo che mi hai dedicato, mi sei stato molto utile!

    Roberto

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.