是否有一种创意且简单的方法可以同时检查多个表单字段。
我有一个包含动态生成字段的表单,每个表单都有一个唯一的ID。
提交所有字段不是必需的,但在提交之前必须填写至少一个字段。
有没有办法在Codeigniter中执行此操作,或者我将如何有效地验证这一点。
我知道可以单独检查每个字段,但我正在寻求更清洁的方式。
我希望你们能清楚。感谢。
答案 0 :(得分:5)
试试这个:
$_POST['data_you_want_to_validate_together'] = $_POST['first_field'] . $_POST['second_field'];
$this->form_validation->set_rules('data_you_want_to_validate_together','Some Data', 'required|callback_some_function');
现在您可以通过以下方式获取数据:
echo $this->input->post('data_you_want_to_validate_together');
答案 1 :(得分:1)
现在,我有一个自定义函数,它将批量检查表单上的每个提交,以确保它符合一组规则。我认为可以将我的表单设置为html数组(data[]
),在代码点火器中检索它,然后使用CI callback_
验证功能确保一切正常。这看起来很复杂,所以我还没有把头完全包裹起来,但也许这会让你的车轮转向正确的方向。
修改强>
$this->load->library('form_validation');
// If there is any posted data, then we should assign it to our $post_data array.
$post_data = $this->input->post('project_data');
if (empty($post_data)) {die('empty form');}
// Now, we are ready to validate the incoming data.
// We will send the data through a callback function which will check to make sure it is valid.
// If it is not valid, the callback function will trigger a codeigniter validation error.
// Let's temporarily remove any commas from the submission data to avoid delimiter confusion when sending it through the callback
$post_data = str_replace(",", "DELIMITEDCOMMA", $post_data);
$post_data_str = http_build_query($post_data);
$this->form_validation->set_rules("project_data[errors]", 'Errors', "required|callback__validate_project_data[$post_data_str]");
$this->form_validation->run();
然后,根据您需要验证的内容编写自定义验证函数。
function _validate_project_data($value, $request)
{
// A callback rule check is being attempted by the CI validator
// $value is the actual value of the submission, while $request is the key and value
$request = explode(",", $request);
$request = str_replace("DELIMITEDCOMMA", ",", $request);
// rename the keys in the request back to the original convention
parse_str($request[0], $request);
//var_dump($request);
// perform validation here and return true or false (valid or invalid)
}
答案 2 :(得分:-2)
不完全确定您的意思,因为无论您采用哪种方式,都必须单独检查字段。除非你连接所有输入并检查它?也许我错过了那些东西。
只需去客户端:http://flowplayer.org/tools/demos/validator/index.html
Serverside:http://formigniter.org/
希望这会有所帮助......