У меня есть три телефонных поля (рабочий_фон, домашний_телефон и сотовый).Я хотел бы убедиться, что пользователь заполняет хотя бы один из них.Пока это моя проверка.
array(
'field' => 'work_phone',
'label' => 'lang:employee.work_phone',
'rules' => 'max_length[10]|numeric|callback_check_phones[work_phone]'
),
array(
'field' => 'home_phone',
'label' => 'lang:employee.home_phone',
'rules' => 'max_length[10]|numeric|callback_check_phones[home_phone]'
),
array(
'field' => 'cell_phone',
'label' => 'lang:employee.cell_phone',
'rules' => 'max_length[10]|numeric|callback_check_phones[cell_phone]'
),
function check_phones($value,$name) {
if((!isset($_POST[$name]))) {
$this->form_validation->set_message('check_phones',
'You must enter at least one phone number');
return FALSE;
}
else
{
return TRUE;
}
}
Проблема в том, что это делает ВСЕ поля телефона обязательными.Если я пытаюсь if((!isset($_POST[work_phone])) ||(!isset($_POST[home_phone])) ){
, ошибка не возвращается.Какой лучший способ проверить, не является ли одно из трех полей не пустым?
РЕДАКТИРОВАТЬ Я получил это для работы, используя empty()
вместо isset()
и &&
вместо||
Я знаю, есть
function check_phones($value){
if((empty($_POST['work_phone'])) && (empty($_POST['home_phone'])) && (empty($_POST['cell_phone']))){
$this->form_validation->set_message('check_phones', 'You must enter at least one phone number');
return FALSE;
}
else
{
return TRUE;
}
}
, который работает, но возвращает ошибку три раза