Проверка поля ввода формы с помощью PHP - PullRequest
0 голосов
/ 13 марта 2012

У меня есть пара полей в <form> ... $fieldset - это массив имен полей, он зацикливает их с проверкой isset().

Я хочу применить проверку (например: требуемый ввод, электронная почта) к нескольким полям, как применить это из моей логики кода?

public function actionProfile($id = null) {

        $profileModel = new ProfileModel;

        // <input> fields name
        $fieldset['name'] = array('FirstName', 'LastName');
        $fieldset['address'] = array('HouseNumber', 'StreetName', 'Town', 'Location');

        $formError = array();
        if (isset($_POST['profile'])) {
            // Process input event
            foreach ($fieldset as $legend => $fields) {
                foreach ($fields as $field) {
                    if (!isset($_POST['profile'][$field])) {
                        $formError[$legend] = $field;
                    } else {
                        $form[$legend][$field] = $_POST['profile'][$field];
                    }
                }
            }

            if (count($formError) == 0) {
                if ($profileModel->saveAddress($form['address'])) {
                    //Saved to the database.
                }
            } 
        }


       // Get data from the database
       $data['profile'] = $profileModel->find($id);
       $view = new View($this->layout, $data)->render();
}

В файле просмотра это будет выглядеть примерно так:

<input type='text' value=<?php echo $profile['first_name'] name='profile[FirstName]' ?>
<input type='text' value=<?php echo $profile['last_name'] name='profile[LastName]' ?>

Редактировать : При редактировании записи через форму .. Если есть ошибка (проверка) - я хочу вернуть значение пользовательского ввода обратно в значение <input> вместо значения из базы данных. Как это можно сделать из моего кода?

Ответы [ 3 ]

2 голосов
/ 13 марта 2012

В данный момент вы помещаете логику проверки в контроллер.Это должно быть в бизнес-объекте домена ( читать дальше: здесь и здесь ).

Также «модель» - это не класс.Модель - это слой в архитектуре MVC.Эти слои в основном состоят из двух типов экземпляров: доменные объекты и Data Mappers .У каждого совершенно разные обязанности.

0 голосов
/ 14 марта 2012

Использование функций фильтра PHP:

http://www.php.net/manual/en/ref.filter.php

Использование обработчиков переменных

http://us2.php.net/manual/en/ref.var.php

0 голосов
/ 13 марта 2012

Я думаю, что было бы разумно отделить код подтверждения от фактической функции обновления.

Сначала он должен пройти через валидатор, проверяя длину и необходимые входные данные. Когда это пройдет, вы можете отправить все эти (отформатированные) данные в действие. Если он не прошел проверку, верните его в представление с дополнительной информацией об ошибке, чтобы вы могли направить пользователя к решению проблемы.

Надеюсь, вы понимаете, что я пытаюсь вам объяснить. : -).

...