codeigniter / Pyro: убедитесь, что одно из трех полей является действительным - PullRequest
2 голосов
/ 05 марта 2011

У меня есть три телефонных поля (рабочий_фон, домашний_телефон и сотовый).Я хотел бы убедиться, что пользователь заполняет хотя бы один из них.Пока это моя проверка.

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;
    }

}

, который работает, но возвращает ошибку три раза

Ответы [ 3 ]

1 голос
/ 05 марта 2011

как насчет использования класса ввода CI ... $ this-> input-> post вернет false, если его пусто

<code>
if($this->input->post('work_phone') || $this->input->post('home_phone') || $this->input->post('cell_phone'))
    {
        echo "We have your phone!";
    }
    else
    {
        echo "Please enter at least one!";
    }

Обновление для проверки CI .. .

Если они не заполнили ни одно поле телефона, вы можете просто добавить проверку для первого. Вот так ...

<code>
if($_SERVER['REQUEST_METHOD'] == "POST")
{
    if($this->input->post('work_phone') || $this->input->post('home_phone') || $this->input->post('cell_phone'))
    {
        echo "At least one is in there";
    }
    else
    {
        $this->form_validation->set_rules('work_phone', '1 Phone', 'required');
//      echo "Please enter at least one!";
    }
}</p>

<p>
1 голос
/ 05 марта 2011

просто измените свои операторы! Isset на isset:

if(isset($_POST['phone1') || isset($_POST['phone2']) || isset($_POST['phone3'])){
   //at least 1 is filled.
}else{
   //fail
}
0 голосов
/ 17 марта 2011

Ответ должен использовать empty() вместо isset(), см. Выше.

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