Перейти к содержанию

Рекомендуемые сообщения

Добрый день, столкнулся с ситуацией. Поле - Имя переименовал на Имя Отчество и теперь надо прописать регулярное выражение на проверку этого поля: [А-Я][а-я]+\s[А-Я][а-я]+
Чтобы обязательно был пробел. Подскажите, в каком файле это меняется?

 

PS не используя модуль Simple

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

на какой странице ввод в поле? 

а так в контроллере выводимой страницы примерно тут

	private function validate() {
		if ((utf8_strlen(trim($this->request->post['firstname'])) < 1) || (utf8_strlen(trim($this->request->post['firstname'])) > 32)) {
			$this->error['firstname'] = $this->language->get('error_firstname');
		}

		if ((utf8_strlen(trim($this->request->post['lastname'])) < 1) || (utf8_strlen(trim($this->request->post['lastname'])) > 32)) {
			$this->error['lastname'] = $this->language->get('error_lastname');
		}
       .......

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
7 минут назад, oesemenov сказал:

Поле - Имя переименовал на Имя Отчество

где? регистрация?  оформление заказа?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, Shkip сказал:

на какой странице ввод в поле?

 

/checkout

 

Спасибо, тогда следующий вопрос, в каком месте прописывать выражение это? В модуле Siple там вообще все просто, но после его установки заказы стали пропускаться в админке, поэтому отключил и пытаюсь своими силами настроить поля.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Только что, fanatic сказал:

где? регистрация?  оформление заказа?

оформление заказа

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

\catalog\controller\checkout\guest.php

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
			if ((utf8_strlen(trim($this->request->post['firstname'])) < 1) || (utf8_strlen(trim($this->request->post['firstname'])) > 32)) {
				$json['error']['firstname'] = $this->language->get('error_firstname');
			}

			if ((utf8_strlen(trim($this->request->post['lastname'])) < 1) || (utf8_strlen(trim($this->request->post['lastname'])) > 32)) {
				$json['error']['lastname'] = $this->language->get('error_lastname');
			}

 

Изменено пользователем fanatic

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

fanatic, спасибо, только пока вопрос все-таки остался. В Simple достаточно просто в поле прописывается выражение и все. А тут в какую часть кода это вставлять и через || ?

 

if ((utf8_strlen(trim($this->request->post['firstname'])) < 1) || (utf8_strlen(trim($this->request->post['firstname'])) > 32) || (utf8_strlen(trim($this->request->post['firstname'])) = [А-Я][а-я]+\s[А-Я][а-я]+)) {
				$json['error']['firstname'] = $this->language->get('error_firstname');
			}

Так? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Designer, спасибо, посмотрю

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, oesemenov сказал:

Так?

неа:rolleyes:

после 

            if ((utf8_strlen(trim($this->request->post['firstname'])) < 1) || (utf8_strlen(trim($this->request->post['firstname'])) > 32)) {
                $json['error']['firstname'] = $this->language->get('error_firstname');
            }

вставить

            if (! preg_match('/[А-Яа-я]+\s+[А-Яа-я]+/', trim($this->request->post['firstname']))) {
                if (isset($json['error']['firstname'])) {
                    $json['error']['firstname'] .= $this->language->get('error_firstname_1');
                } else {
                    $json['error']['firstname'] = $this->language->get('error_firstname_1');
                }
            }

в фйле  \catalog\language\ru-ru\checkout\checkout.php     добавить после  

$_['error_firstname']                = 'Имя должно быть от 1 до 32 символов!';

это

$_['error_firstname_1']              = 'Имя и фамилия, должны быть разделены пробелом';

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
36 минут назад, fanatic сказал:

 


if (! preg_match('/[А-Яа-я]+\s+[А-Яа-я]+/', trim($this->request->post['firstname']))) {
	if (isset($json['error']['firstname'])) {
		$json['error']['firstname'] .= $this->language->get('error_firstname_1');
	} else {
		$json['error']['firstname'] = $this->language->get('error_firstname_1');
	}
}

 

 

if (empty($this->request->post['firstname'])) {
/* 
Текст об ошибке, если поле не определено или пустое
*/
} else {
/* 
При валидации полей, не нужно использовать trim, так как пустое поле в начале или в конце строки, это не валидно!
В регулрке обязательно флаги iu для работы не чувствительность к регистру и возможность использовать русские буквы 
так же, можно и ограничить кол-во символов для имени и отчество, добавив [a-Z]{1,10} например

*/
	if (! preg_match('/([еЁА-Яа-я]+)\s([еЁА-Яа-я]+)/iu', $this->request->post['firstname'])) {
		/* Текст ошибки */
	}
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
10 минут назад, Designer сказал:

if (empty($this->request->post['firstname'])) { /* Текст об ошибке, если поле не определено или пустое */ } else {

если поле не пустое, что уже не нужно проверять на пробел?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

fanatic, если поле не пустое, идет проверка по регулярному выражению, где четко указаны правила последовательности ввода данных

 

<?php
$firstname = ' ';

if (empty($firstname)) {
 echo "Поле пустое";
} else {
	if (! preg_match('/([еЁА-Яа-я]+)\s([еЁА-Яа-я]+)/iu', $firstname)) {
		echo "Не прошел регулярку";
	}
}
/* Результат проверки */
Не прошел регулярку

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
11 минут назад, fanatic сказал:

если поле не пустое, что уже не нужно проверять на пробел?

да, протупил.  пора спать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Designer, fanatic, спасибо вам огромное, разжевали на 100%, сегодня вечером проверю)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От gyurza2000
      При регистрации нового пользователя есть поля "Имя" и "Фамилия", хочу там где Имя дописать Отчество, то есть что бы стало "Имя Отчество". Делается это я так понимаю в языковом файле, но я никак не могу его найти!!!Мне нужно что бы в поле Имя покупатели писали и своё отчество, но покупатели то не знают что я этого хочу.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.