表单控制器是否应包含多个输入控制器

时间:2016-09-19 13:06:56

标签: php controller

我想知道验证包含多种输入类型的表单的正确方法是什么。

表单应该是一系列指令,逐个验证每个输入:

class FormController{    

    function validateForm(){

            if(!$_POST['post_input_name']) return $error;

            if(!$_POST['post_input_birthday']) return $error;
    }
}

或表单控制器是否应该为每个输入包含一个控制器?

class FormController{    

    function __construct($input_name_controller, $input_birthday_controller){
            ....
    }

    function validateForm(){

            $this->getInputNameController()->validate($_POST);

            $this->getInputBirthdayController()->validate($_POST);
    }
}

我的猜测是第二种解决方案更好,因为通用字段控制器可以在其他类型的表单中重用,代码语法对我来说似乎更具可读性。

对此有任何意见都是受欢迎的。谢谢

2 个答案:

答案 0 :(得分:0)

我在一周前开始使用OpenCart,其所有控制器都有类似

的代码
...

        if (isset($this->request->get['sort'])) {
            $sort = $this->request->get['sort'];
        } else {
            $sort = 'p.sort_order';
        }

        if (isset($this->request->get['order'])) {
            $order = $this->request->get['order'];
        } else {
            $order = 'ASC';
        }

        if (isset($this->request->get['page'])) {
            $page = $this->request->get['page'];
        } else {
            $page = 1;
        }
...

所以我认为你的第一个解决方案是

答案 1 :(得分:-1)

使用valitronvalidation等验证库。