Я уже довольно давно являюсь разработчиком PHP, но до сегодняшнего дня я не нашел простого способа обработки (он же нормализует, очищает, проверяет, заполняет и отображает формы и соответствующие им ошибки полей).
Я знаю, что большинство фреймворков PHP в настоящее время облегчают эту работу, но почему-то мне не хочется переносить весь мой код на одну из этих фреймворков, и я не совсем понимаю, как проверка формы реализована в Django для экземпляр (я знаю, это Python, но мне очень нравится их подход), так что я бы лучше разместил здесь способ обработки простой формы, и, возможно, вы, ребята, можете указать мне лучшее направление.
<?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');
}
}
}
?>
Как вы можете видеть, это должна быть простая контактная форма, однако у меня отнимает жизнь, чтобы проверить ее, я изучал некоторые шаблоны проектирования (Observer, Factory), но я не чувствую уверенности, если и каким образом я должен их реализовать.