
Originariamente inviata da
Al_katraz984
$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