Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Модуль Меню - заголовки для блоков меню их поля "Название"

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 8
Просмотров: 7293
Последний ответ 06 Июня 2014, 12:06:35
от admin
Требуется по "клику" на элемент увеличить значение поля и показать значение

Автор tkalyuginaРаздел JS и AJAX

Ответов: 0
Просмотров: 1615
Последний ответ 02 Сентября 2016, 12:03:55
от tkalyugina
Тип поля "Состаное"

Автор SumrakrndРаздел Настройка системы и модулей

Ответов: 4
Просмотров: 2189
Последний ответ 28 Декабря 2016, 17:14:17
от Sumrakrnd
Задать значени поля тип "Составное"?

Автор muldyРаздел Custom макросы

Ответов: 5
Просмотров: 5270
Последний ответ 14 Апреля 2014, 21:20:45
от ilyar
Мультизагрузка файлов в поля "набор изображения"

Автор atachРаздел Настройка системы и модулей

Ответов: 0
Просмотров: 1313
Последний ответ 26 Апреля 2017, 19:26:48
от atach

0 Пользователей и 1 Гость просматривают эту тему.

*

john

  • ***
  • 207
  • +6/-0
    • Просмотр профиля
Кто-нибудь делал проверку заполнения поля с телефоном, то как?

Я открыл файл /classe/modules/data/__client_reflection.php
Нашел строку
 public function checkRequiredData(iUmiObjectType $objectType, $data, $objectId, $isNew) {... 

И пытаюсь туда добавить проверку, если введено не 10 символов, то выдает сообщение о ошибке.
$count = 10;
$objects = umiObjectsCollection::getInstance();
$object_address = $objects->getObject($adres_id);
$phone = $object_address->mobilnyj_telefon;
if(strlen($phone) != $count ) {
$errstr = ($admin) ? "%errors_wrong_field_value%" : getLabel('error-wrong-field-value');
$this->errorNewMessage($errstr . " \"{$fieldTitle}\"", false, 100, "input-missed-field");
++$wrongFieldsCount;}
Правильно ли я делаю?

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Нет, не правильно. Вы правите системный файл, это не хорошо, так как он перезатрется при первом же обновлении umi.

Для добавления механизма проверки к полям, в том числе проверку на правильность ввода телефона чаще всего используют js механизмы проверяющие что вводит пользователь. Если вам нужен механизм проверки на уровне php, то для этого в umi есть http://api.docs.umi-cms.ru/spravochnik_po_klassam_yadra_umicms/model_dannyh/baserestriction/

*

john

  • ***
  • 207
  • +6/-0
    • Просмотр профиля
Обновлений не будет) Точно не затрется)
т.е. мне не сюда надо добавлять условие?
if($restrictionId = $field->getRestrictionId()) {
$restriction = baseRestriction::get($restrictionId);
if($restriction instanceof baseRestriction) {
if($restriction instanceof iNormalizeInRestriction) {
$value = $restriction->normalizeIn($value);
}

if($restriction->validate($value) == false) {
$fieldTitle = $field->getTitle();

$errstr = ($admin) ? "%errors_wrong_field_value%" : getLabel('error-wrong-field-value');
$errstr .=  " \"{$fieldTitle}\" - " . $restriction->getErrorMessage();

$this->errorNewMessage($errstr, false, 101, "input-wrong-field");
++$wrongFieldsCount;
}
}
}
А сюда? \classes\system\subsystems\models\data\restrictions
<?php
  class emailRestriction extends baseRestriction {
    protected $errorMessage = 'restriction-error-email';

    public function validate($value, $objectId = false) {
      return (bool) ($value ? preg_match("/.+\@.+\..+/", $value) : true);
    }
  };
?>

Не врубаюсь как писать, подскажите пожалуйста.
Необходимо проверить, что введено 10 символов.

*

john

  • ***
  • 207
  • +6/-0
    • Просмотр профиля
На изучал в инете)
В файл добавил \classes\system\subsystems\models\data\restrictions\email.php
Сомневаюсь в правильности, но надеюсь иду в верном направлении)
Необходимо проверить, что введено 10 символов в поле с идентификатором $mobilnyj_telefon
class mobilnyj_telefonRestriction extends baseRestriction {
protected $errorMessage = 'restriction-error-email';
public function validate($value) {
return (bool) ($value ? strlen("10", $value) : true);
}
};

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
в итоге что-нибудь заработало?

P.S. после создания правила валидации, нужно это правило к полю прикрепить. То есть, зайти в шаблон данных (или в форму), найти это поле и при редактировании в параметре "Формат значения" выбрать то правило валидации, которые вы создали.

*

john

  • ***
  • 207
  • +6/-0
    • Просмотр профиля
Не заработал.

Как добавить новый формат значения?
В help просто описание - Формат значения — для некоторых типов полей позволяет выбрать способ проверки данных, вводимых в дальнейшем в это поле. В случае, если значение не проходит проверку по указанному способу, будет выдана ошибка и запрос на повторный ввод данных.

Я использовал формат значения e-mail, в php использовал правило
class mobilnyj_telefonRestriction extends baseRestriction {
protected $errorMessage = 'restriction-error-email';
public function validate($value) {
return (bool) ($value ? strlen("3", $value) : true);
}
};
Если ничего не вводить, то ничего не выводит, если ввести 1 символ или 3 как положено, пишет некорректно заполнено поле.

*

john

  • ***
  • 207
  • +6/-0
    • Просмотр профиля
Как добавить формат значения , не решил(

Зато условие заработало
public function validate($value, $count = 15) {
if (strlen($value) == $count){
return true;}}

Хотя зачем его искал)) я добавил маску ввода телефона
8(___)___-__-__ и она состоит из 15 символов.
Вопрос, как сделать проверку наличия символа "_"?

*

john

  • ***
  • 207
  • +6/-0
    • Просмотр профиля
Может и можно проще
У меня получилось так
public function validate($value) {
$dlina=strlen($value);
for($i=14; $i<$dlina; $i++)
{
$bykva= substr("$value",$i,1);
if ($bykva=="_") {
return false;
}
else {
return true;
}
}
}