【问题标题】:Form input field validation with PHP使用 PHP 进行表单输入字段验证
【发布时间】:2012-03-13 10:47:30
【问题描述】:

我在<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]' ?>

编辑:通过表单编辑记录时。如果出现错误(验证) - 我想将用户输入值放回&lt;input&gt; 值而不是数据库中的值。如何从我的代码中完成?

【问题讨论】:

    标签: php forms validation


    【解决方案1】:

    您当前正在将验证逻辑放入控制器中。这应该放在域业务对象中(阅读更多: herehere)。

    另外,“模型”不是一个类。模型是 MVC 架构中的一层。该层大部分由两种类型的实例组成:域对象和Data Mappers。每个人都有完全不同的职责。

    【讨论】:

      【解决方案2】:

      我认为将验证码与实际更新功能分开是明智的。

      首先让它通过验证器,检查长度和所需的输入。通过后,您可以将所有(格式化的)数据发送到操作。如果未通过验证,请将其返回到视图中并提供其他错误信息,以便指导用户解决问题。

      我希望您能理解我要向您解释的内容。 :-)。

      【讨论】:

        【解决方案3】:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-10
          • 1970-01-01
          • 2013-02-24
          • 1970-01-01
          • 2023-03-14
          • 2021-04-13
          相关资源
          最近更新 更多