@Speakermen

Как пересобрать массив с элементами?

Как можно уменьшить код например нужно обработать данные с форм email password.
Если каждый инпут проверять через if и выводить сессию об ошибке заполнения то получается куча одинакового кода.
Если сделать таким образом 'email' => 'required|max:255', то как потом можно собрать это всё вместе. Буду благодарен за компонент в packagist/ как основу для понимания реализации.

$_POST['email']
$_SESSION['email']
 'email' => 'required|max:255',


function validate()
  {
    $getForm = ['name', 'image', 'platforms', 'chipsets', 'manufacturers'];

    for ($i=0; $i < count($getForm); $i++)
    { 
      if (isset($_GET[$getForm[$i]]) && empty($_GET[$getForm[$i]])) return false; //$_SESSION['error']['required']
      else return true;
    }
  }

  if (validate())
  {
    if (setMotherboard($_GET['name'], $_GET['image'], $_GET['platforms'], $_GET['manufacturers'], $_GET['chipsets']))
    {
      header('Location: /get_motherboard.php');
      exit;
    }
  }

<code lang="php">
class FormValidate
	{
		public static function validate ($params)
		{
			foreach($params as $key => $value) 
			{
	            //echo  $key . ' ' . $value . '<br>';

	            //echo $params[$key] . '<br>';;

	            $params[$key] = explode('|', $params[$key]);
	        }



			echo '<pre>';
			var_dump($params);
			echo '</pre>';
		}
	}

	FormValidate::validate([
		'email' => 'required|max:255',
        'username' => 'required',
        'password' => 'required'
	]);
</code>
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
@alexalexes
Если вы видите, что пишите один и тот же код повторно, значит, пора общую часть кода выносить в функцию или метод. И эта ситуация может случиться не обязательно в модуле валидации.
Пишите базовые функции:
а) проверка обычной строки на минимум и максимум по длине;
б) проверка радиокнопки;
в) проверка чекбокса;
г) выпадающего списка.
Все остальные функции будут вызывать что-то из этого базиса и допроверять свойства поля, например, email вы проверяете функцией А на корректность длины, а потом валидность по регулярке. Если длина не та, то предупреждения выведете из функции А, а регулярку не станете проверять, а если косячит по регулярке, то уже будет предупреждение, что email некорректен.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы