У меня есть HTML-форма, созданная с использованием Codeigniter
и PHP
. Я пытаюсь установить проверку на 2 поля. Поля могут быть пустыми, но если один заполняется, а не другой, то должна быть создана ошибка. Поля:HTML-поля формы - подтвердить или разрешить пустой
-ltitle []
-llink [] //array of multiple links corresponding to ltitle[]
Я пытаюсь выполнить проверку только тогда, когда либо один из поля заполняются.
if( !empty($_POST['ltitle']) || !empty($_POST['llink']))
{
$this->form_validation->set_rules('ltitle[]', 'ltitle', 'xss_clean|callback_check_link');
$this->form_validation->set_rules('llink[]', 'llink', 'xss_clean|callback_check_link');
}
check_link функция:
function check_link($ltitle){
$llink = $_POST['llink'];
if(empty($ltitle) && empty($llink))
{
return true;
}
elseif( (empty($ltitle) && !empty($llink)) || (!empty($ltitle) && empty($llink)) )
{
$this->form_validation->set_message('check_link', 'Complete the link fields correctly');
return false;
}
else
{
return true;
}
}
В тот момент, когда форма была отправлена с обоих полей пустым, то появляется сообщение об ошибке «Заполните поля ссылку правильно», что означает функцию check_link выполнил. Но поля пустые? ! Было бы очень полезно помочь в этом!
Почему вы добавили '$ llink = $ _POST ['llink'];' но не '$ ltitle = $ _POST ['ltitle'];'? Ваша функция обратного вызова, похоже, работает, как ожидалось, при проверке '$ ltitle', но не при проверке' $ llink'. – roberto06
изменить это 'if (! Empty ($ _ POST ['ltitle']) &&! Empty ($ _ POST ['ltitle']))' –
Я изменил check_link: "function check_link() { $ ltitle = $ _POST ['ltitle']; $ llink = $ _POST ['ltitle']; if ((empty ($ ltitle) &&! Empty ($ llink)) || (! Empty ($ ltitle) && empty ($ LLINK))) { $ this-> form_validation-> set_message ('check_link', 'Заполните поля ссылку правильно'); возвращение ложным;} еще { возвращающие; } } " , который теперь позволяет отправлять пробелы. Но это не ошибка, когда заполняется только одно поле? – RebeccaRol