Допустим, у нас есть обычная форма HTML с несколькими полями ввода:
<form>
<input type="text" name="user">
<input type="email" name="email">
<input type="password" name="password">
<input type="number" name="amount">
<buttont type="submit">Send</button>
</form>
Эта форма передается, а затем обрабатывается методом класса:
function example($user, $password, $email, $amount) {
// Check for all input fields
return "error text";
}
Пока так хорошо - это хорошо работает, если вы хотите отобразить одно общее c сообщение об ошибке рядом с формой.
// <form> ... </form>
<span style="color:red;">Generic error message</span>
Но что, если вы хотите отобразить несколько сообщений об ошибках; по одному для каждого поля?
<form>
<input type="text" name="user">
<span style="color:red;">user error</span>
<input type="email" name="email">
<span style="color:red;">email error</span>
<input type="password" name="password">
<span style="color:red;">password error</span>
<input type="number" name="amount">
<span style="color:red;">amount error</span>
</form>
Есть ли эффективный способ добиться этого? Я подумал о сборе сообщений об ошибках в массиве (внутри метода), возврате массива и затем проверьте с помощью isset (), есть ли ошибка.
$errors = example($user, $password, $email, $amount);
<form>
<input type="text" name="user">
<?php
if(isset($errors["user"])) {
?>
<span style="color:red;">user error</span>
<?php
}
?>
</form>
Однако эта попытка приводит к раздуванию кода. Особенно, когда мы говорим о множественных формах и десятках различных методов. Есть ли лучшее решение для достижения того, чего я хочу?