Создание взаимосвязанных списков

Материал из Umicms
Версия от 10:01, 30 марта 2014; Velross (обсуждение | вклад) (Новая страница: «Актуально для версии 2.9.6 ---- '''Задача:''' создать связанный список '''Решение:''' Стандартная …»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Актуально для версии 2.9.6


Задача: создать связанный список

Решение:

Стандартная логика связанных списков, примерно, следующая.
Вы создаете список, например "Города" и заполняете его значениями: "Москва", "Санкт-Петербург" и т.д.
Далее, Вы создаете новый справочник, например "Почтовые индексы" и в его свойствах создаете новое поле с типом "выпадающий список" указывая в качестве справочника список городов. Затем заполняете справочник, делая соответствия между названиями и значением из первого справочника.

Более подробно:
1) создаем новую группу в типе данных "Объект каталога"
2) добавляем новое поле Тест с типом выпадающий список
Wiki001.png
3) заполняем список значениями: "Волгоград", "Санкт-Петербург".
4) создаём новый справочник "Почтовые индексы"
5) Добавим в него группу "Связанный справочник"
6) Добавим новое поле "Города" с типом "Выпадающий список" и справочником "Тест"
Wiki002.png
7) заполним справочник, установив соответствия
Wiki003.png
8) напишем кастом public function spav(){}, указав в нем id справочника "Почтовые индексы"

public function spav(){
	// значение get-параметра
	$sprav_item_id = (int) getRequest('spr');
	if(!$sprav_item_id) return;
	// id второго справочника
	$guid_id_spr2 = 138;
	// выборка данных из второго справочника
	$sel = new selector('objects');
	$sel->types('object-type')->id($guid_id_spr2);
	// goroda - Поле типа Выпадающий список во втором справочнике
	$sel->where('goroda')->equals($sprav_item_id);

	$items = array();

	foreach($sel as $item) {
		$item_arr = Array();
		$item_arr['attribute:id'] = $item->id;
		$item_arr['node:name'] = $item->name;
		$items[] = $item_arr;
	}

	return Array('attribute:title' => 'Почтовые индексы', "items" => Array('nodes:item' => $items));
}

9) проверим работу запросом http://адрес_сайта/udata/catalog/spav/?spr=892