Вывод выпадающего списка ресурсов в админке

мне нужно получить ресурсы родителя на скриншоте 2 из скриншота 1
и выводить их в поле админкы моего пакета в 3м поле (скрин 2)

задача такова есть таблица
id|yslyga|price|forpage
1|yslyga1|100|3
2|yslyga2|400|4

она заполняеться через админку (скрин 2)

forpage — можно вручную ввести id ресурса
но человек не разбираеться в этом и хочу сделать список ресурсов и автоматически чтоб id вставлялось в бд

потом на каждой из страниц выводить только услуги этой страницы
Иван Микоряк
03 августа 2014, 12:27
modx.pro
1
1 749
0

Комментарии: 7

Иван Микоряк
03 августа 2014, 16:36
0
хорошо получилось вывести по примеру
github.com/bezumkin/miniShop2/blob/master/assets/components/minishop2/js/mgr/misc/ms2.combo.js
+
github.com/bezumkin/miniShop2/blob/master/core/components/minishop2/processors/mgr/system/element/resource/getlist.class.php
но чет оно не записывает в базу при редактировании/добавления ресурса id выбраной страницы
а так же возвращает все страницы сайта
можно как то определенные?
    Иван Микоряк
    04 августа 2014, 12:08
    0
    ,{xtype: 'pricelist-combo-resource',fieldLabel: _('pricelist_item_forres'),name: 'forres',id: 'pricelistbyp-'+this.ident+'-forres',anchor: '99%'}
    можно узнать что это поле передает в базу?
    а то должно id выбранного ресурса и в базе поле инт а оно не заполняеться чет
      Евгений Дурягин
      04 августа 2014, 13:53
      0
      Открыть консоль браузера и посмотреть что в запросе на сервер уходит при сохранении.
      У комбобокса должен быть параметр hiddenName: 'forres'
    Иван Микоряк
    04 августа 2014, 16:50
    0
    <?php
    
    $pricelistbyp = $modx->getService('pricelistbyp','pricelistbyp',$modx->getOption('pricelistbyp_core_path',null,$modx->getOption('core_path').'components/pricelistbyp/').'model/pricelistbyp/',$scriptProperties);
    if (!($pricelistbyp instanceof pricelistbyp)) return '';
    
    /**
     * Do your snippet code here. This demo grabs 5 items from our custom table.
     */
    $tpl = $modx->getOption('tpl',$scriptProperties,'Item');
    $sortBy = $modx->getOption('sortBy',$scriptProperties,'name');
    $sortDir = $modx->getOption('sortDir',$scriptProperties,'ASC');
    $limit = $modx->getOption('limit',$scriptProperties,5);
    $outputSeparator = $modx->getOption('outputSeparator',$scriptProperties,"\n");
    
    /* build query */
    $c = $modx->newQuery('pricelistbypItem');
    $c->sortby($sortBy,$sortDir);
    $c->limit($limit);
    $items = $modx->getCollection('pricelistbypItem',$c);
    
    /* iterate through items */
    $list = array();
    /* @var pricelistbypItem $item */
    foreach ($items as $item) {
    	$itemArray = $item->toArray();
    	$list[] = $modx->getChunk($tpl,$itemArray);
    }
    
    /* output */
    $output = implode($outputSeparator,$list);
    $toPlaceholder = $modx->getOption('toPlaceholder',$scriptProperties,false);
    if (!empty($toPlaceholder)) {
    	/* if using a placeholder, output nothing and set output to specified placeholder */
    	$modx->setPlaceholder($toPlaceholder,$output);
    	return '';
    }
    /* by default just return output */
    return $output;
    этот код я взял из заготовки
    не понятно все, но интересует:
    /* build query */
    $c = $modx->newQuery('pricelistbypItem');
    $c->sortby($sortBy,$sortDir);
    $c->limit($limit);
    $items = $modx->getCollection('pricelistbypItem',$c);
    как я понимаю это сам запрос?
    как мне тогда с таблицы
    таблица
    id|yslyga|price|forpage
    1|yslyga1|100|3
    2|yslyga2|400|4
    выводить на странице (ресурсе) только нужные мне поля

    например страница (ресурс) из id 3
    на ней должна вывестись строка
    1|yslyga1|100|3

    т.е мне нужно вызвать мой снипет
    [[pricelistbyp? &pageid='3' &tpl='oneTpl']]

    вопрос в том как передать &pageid='3' и выбрать из базы и вернуть выбранное на страницу
    хоть подсказку какую нит буду рад (делаю в первый раз)
      Иван Микоряк
      04 августа 2014, 17:16
      0
      добавил после
      $limit = $modx->getOption('limit',$scriptProperties,5);
      свой
      $pageid = $modx->getOption('pageid',$scriptProperties,0);
      еще куда то нужно что то добавлять?
        Иван Микоряк
        04 августа 2014, 17:31
        0
        то что есть на данный момент иду тестировать
        <?php
        
        $pricelistbyp = $modx->getService('pricelistbyp','pricelistbyp',$modx->getOption('pricelistbyp_core_path',null,$modx->getOption('core_path').'components/pricelistbyp/').'model/pricelistbyp/',$scriptProperties);
        if (!($pricelistbyp instanceof pricelistbyp)) return '';
        
        /**
         * Do your snippet code here. This demo grabs 5 items from our custom table.
         */
        $tpl = $modx->getOption('tpl',$scriptProperties,'Item');
        $sortBy = $modx->getOption('sortBy',$scriptProperties,'yslyga');
        $sortDir = $modx->getOption('sortDir',$scriptProperties,'ASC');
        $limit = $modx->getOption('limit',$scriptProperties,5);
        $pageid = $modx->getOption('pageid',$scriptProperties,0);
        $outputSeparator = $modx->getOption('outputSeparator',$scriptProperties,"\n");
        
        /* build query */
        $c = $modx->newQuery('pricelistbypItem');
        $c->sortby($sortBy,$sortDir);
        $c->limit($limit);
        $c->where(array(
            'forres' => $pageid
        ));
        $items = $modx->getCollection('pricelistbypItem',$c);
        
        /* iterate through items */
        $list = array();
        /* @var pricelistbypItem $item */
        foreach ($items as $item) {
        	$itemArray = $item->toArray();
        	$list[] = $modx->getChunk($tpl,$itemArray);
        }
        
        /* output */
        $output = implode($outputSeparator,$list);
        $toPlaceholder = $modx->getOption('toPlaceholder',$scriptProperties,false);
        if (!empty($toPlaceholder)) {
        	/* if using a placeholder, output nothing and set output to specified placeholder */
        	$modx->setPlaceholder($toPlaceholder,$output);
        	return '';
        }
        /* by default just return output */
        return $output;
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          7