Как проверить много полей, объединенных в Codeigniter? - PullRequest
1 голос
/ 17 ноября 2010

Существует ли креативный и простой способ проверки сразу нескольких полей формы.

У меня есть форма с сгенерированными полями на лету, у каждого есть уникальный идентификатор.

Для отправки все поля не обязательны, но перед отправкой необходимо заполнить хотя бы одно поле.

Есть ли способ сделать это в Codeigniter, или как мне эффективно проверить это?

Я понимаю, что можно проверить каждое поле отдельно, но я ищу более чистый способ.

Надеюсь, вам понятно, ребята. Спасибо.

Ответы [ 3 ]

5 голосов
/ 25 октября 2012

Попробуйте это:

$_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 голос
/ 06 декабря 2010

Сейчас у меня есть пользовательская функция, которая будет проверять каждую отправку в моей форме, чтобы убедиться, что она соответствует ряду правил. Я думаю, что это может сработать, чтобы настроить мою форму в виде 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)      

}
0 голосов
/ 17 ноября 2010

Не совсем уверен, что вы имеете в виду, поскольку поля должны проверяться индивидуально, в зависимости от того, как вы это делаете. Если вы не объединяете все входные данные и не проверяете это? Может быть, я кое-что там упустил.

Просто перейдите на сторону клиента: http://flowplayer.org/tools/demos/validator/index.html

Серверная часть: http://formigniter.org/

Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...