allora partiamo dal metodo del controllore:
Codice PHP:
public function add() {
questo metodo viene richiamato ogni volta che l'utente raggiunge il percorso:
http://www.sito.it/partner/add
partner -> rappresenta il modulo
add -> rappresenta la funzione da richiamare
sel l'utente raggiunge l'indirizzo e non ha ancora inviato dati al server
quindi:
Codice PHP:
} else {
$content = new partial( 'taxcode-add-form' );
}
il contenuto da mostrare all'utente è formato da uno "spezzone" (partial), una parte di pagina, che si chiama "taxcode-add-form". Questa parte di pagina è un file php chiamato taxcode-form-add.php che contiene il template del form html
l'utente visualizzerà il form di inserimento dati per creare un nuovo taxcode
l'utente compila il form
l'utente invia i dati al server
il form di inserimento dati ha come action di nuovo http://www.sito.it/partner/add
in questo modo richiamo il metodo add() con dati POST del form
ora che ho i dati:
Codice PHP:
if ( isset( $_POST['taxcode-add-form-submit'] ) ) {
verifico che il form sia effettivamente il form di inserimento del taxcode
Codice PHP:
$fv = new formValidator();
$fv->validateEmpty( 'code', 'You must insert a value for the field [code]' );
$fv->validateEmpty( 'description', 'You must insert a value for the field [description]' );
$fv->validateEmpty( 'amount', 'You must insert a value for the field [amount]' );
$fv->validateEmpty( 'fulldescription', 'You must insert a value for the field [fulldescription]' );
( !empty( $_POST['code'] ) ) ? $fv->validateRange( 'code', 'The field [code] has a max length of 32', 32 ) : NULL;
( !empty( $_POST['description'] ) ) ? $fv->validateRange( 'description', 'The field [description] has a max length of 32', 32 ) : NULL;
( !empty( $_POST['amount'] ) ) ? $fv->validateNumber( 'amount', 'The field [amount] is not a number.' ) : NULL;
( !empty( $_POST['fulldescription'] ) ) ? $fv->validateRange( 'fulldescription', 'The field [fulldescription] has a max length of 254', 254 ) : NULL;
effettuo la validazione dei dati come vedi i nomi dei campi del form sono uguali ai nomi dei campi sulla tabella...
la mia classe formValidator() mi permette di verificare i POST in base a vari tipi di controlli, campo vuoto, campo numerico, campo di testo, range di valori, date, latitudini ect ect
se ci sono errori mi da un array altrimenti non mi da niente..
ora le opzioni sono:
o i dati sono validi
o i dati non sono validi
Codice PHP:
$content = new partial( 'form-message' );
mi creo lo spezzone me mostrare il messaggio
se ci sono errori
Codice PHP:
if ( $fv->checkErrors() ) {
$content->content = $fv->displayErrors();
il contenuto del messaggio sara la lista di errori che bisogna sistemare
se non ci sono errori
Codice PHP:
} else {
$this->model->uid = $this->user->id;
$this->model->code = $_POST['code'];
if ( $taxcode = $this->model->taxcodebycode ) {
verifico che non esista già una riga con lo stesso codice quindi devo provare a richiamare un taxcode con il codice inserito dall'utente
Codice PHP:
$content->content = "The selected CODE is already in use by another taxcode: '$taxcode->description'";
se il codice esiste nel database il contenuto del messaggio sarà "il codice selezionato è già in uso da un altro taxcode"
Codice PHP:
} else {
$this->model->insert();
$content->content = $this->model->msg;
}
}
altrimenti posso inserire il nuovo taxcode e mostrare il messaggio di conferma
manca ancora un pezzo che è la vista
Codice PHP:
$this->view->title = 'Taxcode - Add';
$this->view->addView( $content );
forse per capire meglio:
Codice PHP:
class taxcodeController extends abstractController {
protected $model = NULL;
protected $user;
protected $view;
public function __construct( PDO $pdo, user $user, view $view ) {
$this->model = new taxcodeModel( $pdo );
$this->user = $user;
$this->view = $view;
}
public function index() {
}
public function add() {
$this->view->title = 'Taxcode - Add';
$this->view->addView( $content );
}
l'oggetto view è passato come parametro del costruttore (inheritance) ed è disponibile all'interno di tutta la classe.
l'oggetto view è la "vista di base" la struttura principale della pagina (che di solito non cambia mai).
l'oggetto view si compone a sua volta di N*view piu piccole che sono i "partial" che hai letto prima.
Codice PHP:
$this->view->title = 'Taxcode - Add';
$this->view->addView( $content );
Assegno un titolo alla pagina e poi basta aggiungere i frammenti alla view-madre e si compone la pagina intera