Уникальное поле в профиле

 
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1876
Добавил возможность создавать уникальное поле в профиле пользователя.
По умолчанию почему-то такой тип поля в профиле не создать.

В файле system/controllers/users/backend/forms/form_field.php после:
Код PHP:
  1. new fieldCheckbox('options:is_email', array(
  2. 'title' => LANG_VALIDATE_EMAIL,
  3. )),
добавить:
Код PHP:
  1. new fieldCheckbox('options:is_unique', array(
  2. 'title' => LANG_VALIDATE_UNIQUE,
  3. )),
И теперь при создании нового поля в профиле можно указать что поле должно быть уникальным.

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

Чего не происходит в контенте. Т.е. там если поле не менялось, то и на уникальность не проверяется.
Может кто сможет подсказать, где что нужно еще добавить...

Вот и приходится теперь при изменении профиля обязательно изменить уникальное поле, а после сохранения снова редактировать и изменять на прежнее нужное значение.
Редактировалось: 1 раз (Последний: 9 июня 2015 в 11:33)
Дополнения для InstantCMS
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 683
kreator,если я правильно понял, по базе данных идет проверка поля, оно находится и выдает ошибку. Двойку не ставил даже...посмотрите что в классе fieldcheckbox прописано.
Реклама
cms
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1876
Добавленные мной строчки имеются в полях при создании поля в типах контента.

Но там, при изменении контента, если уникальное поле не менялось - то не проверяется на дубль, и нормально сохраняется с таким же значением.

В профиле же если поле оставить с тем же значением то проверка находит дубль.
Дополнения для InstantCMS
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1876
Так может уже знает в чем дело? Почему разная валидация?
Дополнения для InstantCMS
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1876
Или хоть может знает какая функция отвечает, валидировать поле или нет при уникальном значении?
Дополнения для InstantCMS
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3905
kreator:
Почему разная валидация?
Потому что в контенте используются разные методы валидации при добавлении и редактировании материала.
В первом случае validate_unique, во втором validate_unique_exclude.
Какие используются у вас, известно только вам.
Примеры:
\system\controllers\content\frontend.php строка 538,
\system\controllers\content\model.php строка 416.
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1876
Решил не делать хак из этого и обойтись хуком.

Код PHP:
  1. if (!$errors){
  2. $is_allowed = cmsEventsManager::hookAll('user_profile_update', $profile, true);
  3. if ($is_allowed !== true && in_array(false, $is_allowed)) { $errors = true; }
  4. }
Это хук перед Update профиля и ошибок не найдено.

Что должно вернуться из хука? т.е. какое значение должно быть $is_allowed чтобы $errors = true?
После дополнительной проверки поля.
Дополнения для InstantCMS
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.