форма / поле ввода c проверка в методах объекта (php) - PullRequest
0 голосов
/ 18 июня 2020

Допустим, у нас есть обычная форма 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>

Однако эта попытка приводит к раздуванию кода. Особенно, когда мы говорим о множественных формах и десятках различных методов. Есть ли лучшее решение для достижения того, чего я хочу?

...