簡體   English   中英

CodeIgniter使用數據庫中的post數組值驗證表單

[英]CodeIgniter validate form with post array values from the database

我有一個結構如下的表格:

Field A: <input name="something[34]"> -- Field B: <input name="something_else[11]">
Field A: <input name="something[93]"> -- Field B: <input name="something_else[67]">
Field A: <input name="something[5]"> -- Field B: <input name="something_else[212]"> 
...
...

等等,里面有未定義的行數和索引值。

我無法弄清楚如何驗證。 我正在嘗試不同的方式,但我猜不出來:

$this->form_validation->set_rules('something[]', 'Something', 'required|xss_clean');
$this->form_validation->set_rules($_POST[something[]], 'Something', 'required|xss_clean');
$this->form_validation->set_rules($_POST[something][], 'Something', 'required|xss_clean');

等等..

根據表單驗證部分的文檔,我無法弄清楚如何管理它。 你能幫我個忙嗎? 先感謝您!

我用foreach將字段保存在DB中:

foreach ($_POST['something'] as $something_id => $something_name) {

    if ($this->form_validation->run() === TRUE) {
        //insert
    }

}

您可以通過多種方式執行此操作,您可以遍歷帖子項目數組並在每個項目上添加規則(取決於您需要的驗證類型)

$this->form_validation->set_rules('something[]', 'Something', 'required|xss_clean'); // Ensure something was provided

if (is_array($_POST['something'])) {
    foreach ($key as $key => $value) {
        $this->form_validation->set_rules('something['.$key.']', 'Something', 'required|greater_than[10]|xss_clean'); // Any validation you need
    }
}

您也可以編寫自己的自定義驗證,因為Codeigniter允許它:

$this->form_validation->set_rules('something[]', 'Something', 'callback_something_check');

...

function something_check($something) {
    // Do what you need to validate here

    return true; // or false, depending if your validation succeeded or not

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM