Проверка поля на уникальность

 
Посетитель
small user social cms
Медаль
Сообщений: 232
Привет.

Пишу компонент, и мне нужно чтобы при добавлении данных через форму проводилась проверка на уникальность, как в компоненты Контент

Подскажите, как это сделать?

Перерыл интернет и форум ничего не нашел!
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3501
https://github.com/instantsoft/icms2/blob/master/system/controllers/users/backend/forms/form_field.php#L17
Реклама
cms
Посетитель
small user social cms
Медаль
Сообщений: 232

Добавил к своему полю

Код PHP:
  1. $do == 'add' ? array('unique_field') : false
Передал в форму параметр do

При добавлении ошибка
Код PHP:
  1. Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'service' does not have a method 'validate_unique_field' in Z:\home\localhost\www\system\core\action.php on line 29
Добавил во фронтенд код:

Код PHP:
  1.  
  2. public function validate_unique_field($value){
  3. $core = cmsCore::getInstance();
  4. $table_name = 'my_table';
  5. return !$core->db->isFieldExists($table_name, $value);
  6. }
  7.  
Без результатно. Что не так я понял?
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 558
При добавлении поля в форму нужно задать правило проверки на уникальность примерно так:
Код PHP:
  1. new fieldString('имя_поля_в_форме', array(
  2. 'title' => 'Title',
  3. 'rules' => array(
  4. array('unique', '{имя_таблицы_без_префикса}', 'имя_поля_в_таблице')
  5. )
  6. )),
-------
Если нужно иметь две разные проверки, например, для добавления и редактирования, то можно дополнительно использовать проверку на уникальность с исключением редактируемого значения:
Код PHP:
  1. new fieldString('имя_поля_в_форме', array(
  2. 'title' => 'Title',
  3. 'rules' => array(
  4. $do=='add' ? array('unique', '{имя_таблицы_без_префикса}', 'имя_поля_в_таблице') : array('unique_exclude', '{имя_таблицы_без_префикса}', 'имя_поля_в_таблице', $значение_в_этом_поле_для_исключения)
  5. )
  6. )),
А в форму передавать два значения - действие и значение для исключения (если нужно):
Код PHP:
  1.  
  2. public function init($do, $id=0) {
  3. ... описание формы
  4. }
Редактировалось: 2 раз (Последний: 11 мая 2016 в 16:11)
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3501
Вадим Нарочный:
Без результатно. Что не так я понял?
а что в логах пишет?
'my_table' - это без префикса?
Посетитель
small user social cms
Медаль
Сообщений: 232
WebMan:

При добавлении поля в форму нужно задать правило проверки на уникальность примерно так:
Код PHP:
  1. new fieldString('имя_поля_в_форме', array(
  2. 'title' => 'Title',
  3. 'rules' => array(
  4. array('unique', '{имя_таблицы_без_префикса}', 'имя_поля_в_таблице')
  5. )
  6. )),

Спасибо, всё работает!
Посетитель
small user social cms
Медаль
Сообщений: 232
Loadырь:

Вадим Нарочный:
Без результатно. Что не так я понял?
а что в логах пишет?
'my_table' - это без префикса?

И вам спасибо!
В начало страницы
Предыдущая темаСледующая тема Перейти на форум: