Сейчас у меня есть пользовательская функция, которая будет проверять каждую отправку в моей форме, чтобы убедиться, что она соответствует ряду правил. Я думаю, что это может сработать, чтобы настроить мою форму в виде HTML-массива (data[]
), извлечь ее в воспламенитель кода, а затем использовать функцию проверки CI callback_
, чтобы убедиться, что все в порядке. Это кажется сложным, поэтому я еще не полностью обернул вокруг него голову, но, возможно, это может заставить ваши колеса вращаться в правильном направлении.
EDIT:
$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)
}