Sono stato uno sviluppatore PHP da un po 'di tempo ma fino ad oggi non ho trovato un modo semplice per elaborare (cioè normalizzare, disinfettare, convalidare, popolare e visualizzare i moduli ed i rispettivi errori di campo).Come posso semplificare l'elaborazione dei moduli in PHP?
So che la maggior parte dei framework PHP oggigiorno rende questo lavoro più semplice ma in qualche modo non mi sento come trasferire tutto il mio codice su uno di questi framework e non riesco a capire come viene implementata la validazione del modulo in Django per esempio (lo so, è Python ma mi piace molto il loro approccio), quindi penso che il modo migliore per me di pubblicare qui il modo in cui elaboro un semplice modulo e forse voi ragazzi potete indicarmi la direzione migliore.
<?php
// sample controller
class _sample extends framework
{
// sample action
function contact()
{
if ($this->Is->Post() === true)
{
$errors = array();
if ($this->Is->Set($_POST['name']) === false)
{
$errors['name'] = 'Please fill in your name.';
}
if (($this->Is->Email($_POST['email']) === false) || ($this->Is->Set($_POST['email']) === false))
{
$errors['email'] = 'Please fill in your email address.';
}
if (($this->Is->Phone($_POST['contact']) === false) && ($this->Is->Mobile($_POST['contact']) === false))
{
$errors['contact'] = 'Please fill in your phone (or cell phone) number.';
}
if ($this->Is->Set($_POST['message']) === false)
{
$errors['message'] = 'Please type a message';
}
// no errors, it's valid!
if (empty($errors) === true)
{
// do stuff and redirect to "success"/"thank you" page
}
// load the form view, and let it display the errors
// automatically prefill fields with $_POST values
else
{
$this->View('contact_form', $errors);
}
}
// load the form view for the first time
else
{
$this->View('contact_form');
}
}
}
?>
Come si può vedere, questo dovrebbe essere un semplice modulo di contatto però ci vuole la vita fuori di me per la convalida, l'ho cercato in alcuni modelli di progettazione (Observer, fabbrica) ma non lo faccio sentirsi sicuri se e in che modo dovrei implementarli.
Se hai voglia di avere il tempo, puoi dare un'occhiata a come fa Django! –