表单验证集复选框无效

时间:2017-05-12 10:32:21

标签: php forms codeigniter validation checkbox

我遇到了问题而且我不知道它来自哪里: Codeigniter 3.1.2

这是我的代码:

$this->form_validation->set_rules("fielda", "Field A", "");
$_POST["fielda"] = "valuea";
var_dump(set_checkbox("fielda", "valuea"));
var_dump(set_radio("fielda", "valuea"));
var_dump(set_select("fielda", "valuea"));
var_dump(set_value("fielda", "valuea"));

结果如下:

string(0) "" 
string(0) "" 
string(20) " selected="selected"" 
string(6) "valuea"

为什么set_checkbox和set_radio返回一个空字符串?

旁注:这只是为了更好地理解而不是最终代码的测试场景

2 个答案:

答案 0 :(得分:1)

2个原因:

  1. 因为它会检查实际的请求方法是否为POST,而不仅仅是$_POST数组。
  2. 当您使用表单验证库时,帮助程序也会将其用于您为其设置验证规则的字段,并在 $_POST之后修改set_rules() ,此时图书馆已确定该字段未提交。 (由于set_rules()调用不包含任何规则而被忽略,因此这并未真正生效。
  3. 提交表单以供实际使用。一种模仿的正确方法是:

    $input = array("fielda" => "valuea");
    $this->form_validation->set_data($input);
    $this->form_validation->set_rules("fielda", "Field A", "alpha");
    $this->form_validation->run();
    var_dump(set_checkbox("fielda", "valuea")); // will now output "valuea"
    

答案 1 :(得分:0)

使用第三个参数作为复选框或单选按钮,如

var_dump(set_checkbox("fielda", "valuea",TRUE));