В CodeIgniter при проверке массива полей ввода текста можно получить каждый индекс массива для сообщения об ошибке?CodeIgniter Array Text Form Form Validation
У меня есть (по умолчанию) три поля, первые два требуются, и больше полей и динамически добавляются или удаляются.
<input name="url[]" value="" type="text">
<input name="url[]" value="" type="text">
<input name="url[]" value="" type="text">
Сейчас я Переберите входных массивов
foreach ($data ['urls'] as $idx => $url)
{
$num = $idx + 1; // counting number
$this -> form_validation -> set_rules('url[' . $idx . ']', 'Url ' . $num, 'trim|callback_validate_input_url[ ' . $idx . ' ]');
}
Вместо
$this->form_validation->set_rules('url[]', 'URL', 'trim|callback_validate_input_url');
и я проверить его с помощью пользовательского обратного вызова
public function validate_input_url ($uri, $position)
{
if ($position <= 1 && !$uri) // check if it's the first two input arrays and if they're empty
{
$this -> form_validation -> set_message('validate_input_url', 'This field cannot be empty');
return false;
}
if ($position >= 2 && !$uri)
return true; // true if it's the third or later optional URL
$pattern = '/^http:\/{2}.*/';
// must start with http://
if (!preg_match($pattern, $uri))
{
$this -> form_validation -> set_message('validate_input_url', 'This field must have a valid URL');
return false;
}
return TRUE;
}
Таким образом, я может получить сообщение об ошибке для ввода ge nerated ошибки
<?php
foreach ($urls as $idx => $url) {
?>
<input type="text" name="url[]" value="<?php echo $url ?>">
<?php echo form_error('url[' . $idx . ']'); ?>
<?php
} ?>
Так есть ли способ, чтобы получить сообщение об ошибке для поля ввода, вызвавшей ошибка без перебора всех полей ввода и прикрепления правила для каждого из них в отдельности? Я просмотрел документы, и я ничего не видел об этом. Поэтому я не уверен, что я что-то упустил, или если я это делаю, это единственный способ.
validation_errors() аналогичен form_error(), за исключением того, что позволяет отформатировать HTML вокруг ошибки. Я хочу/должен иметь возможность получить ошибку для поля ввода, где произошла ошибка, а не просто произвольно сказать, что была ошибка в каком-либо поле (ах) - без необходимости сначала прокручивать представленные URL-адреса, чтобы назначить отдельное правило их. –