Пользовательская проверка в PHP Codeigniter - требуется одно из двух полей - PullRequest
1 голос
/ 14 ноября 2011

В моей форме есть телефон и поле для телефона. Я хочу, чтобы пользователь заполнил одно из полей или оба, но не то и другое.

Я видел способы сделать это на других языках, но мог бы я дать совет, как это сделать с помощью Codeigniter?

Ответы [ 3 ]

7 голосов
/ 14 ноября 2011

Вы можете сделать это как:

$this->form_validation->set_rules('phone', 'Your validation message.', 'callback__phone_check');

И сделать функцию:

function _phone_check() {
   //check for phone and cellphone field.
  //make sure one field is not empty and return accordingly
}

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

4 голосов
/ 19 января 2015

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

$this->form_validation->set_message('contactVerify', 'Either Phone or Email is required');
...
$this->form_validation->set_rules('phone', 'Phone', 'trim|callback_contactVerify[email]|xss_clean');
$this->form_validation->set_rules('email', 'Email', 'trim|callback_contactVerify[phone]|valid_email|xss_clean');
...
public function contactVerify($contact, $otherField) {
  return ($contact != '' || $this->input->post($otherField) != '');
}

Поскольку это очень простая функция проверки, я заранее установил сообщение об ошибке, чтобыдолжны установить его внутри функции проверки.Я передаю другое поле, которое хочу проверить в качестве второго аргумента через квадратные скобки.

Надеюсь, это полезно.

0 голосов
/ 14 ноября 2011

Просто выполните проверку JS на стороне клиента и проверку PHP на стороне сервера (или используйте помощник по форме в CI) ... В любом случае, PHP должен выглядеть примерно так:

if ($_POST['cellphone'] == '' OR $_POST['phone' == '') {
// do stuff like make an notification, alert, etc... and take users back to the form
}
...