У моей формы есть мобильный телефон и телефон. Я хочу, чтобы пользователь заполнил либо одно из полей, либо и то, и другое, но не одно.
Я видел способы сделать это на других языках, но могу ли я получить некоторые советы о том, как это сделать с помощью Codeigniter?
Просто выполните проверку 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 }
Вы можете сделать это как:
$ this-> form_validation-> set_rules ('phone', 'Ваше сообщение для проверки.', 'callback__phone_check');
И сделайте функцию:
function _phone_check () { // проверяем телефон и поле сотового телефона. // убедитесь, что одно поле не пустое и соответственно }
надеюсь, это поможет
Просто хотел бросить некоторые быстрые фрагменты кода. Я хотел выполнить это, и этот вопрос был одним из первых записей в 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) != ''); }
Поскольку это очень простая функция проверки, я предварительно устанавливаю сообщение об ошибке, поэтому мне не нужно устанавливать его внутри функции проверки. Я перехожу в другое поле, которое я хочу проверить как второй аргумент через квадратные скобки.
Надеюсь, это полезно.