К содержанию

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

мне нужно получить ресурсы родителя на скриншоте 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
2 258
Реклама

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

Иван Микоряк
Иван Микоряк Старожил
03 августа 2014, 16:36
хорошо получилось вывести по примеру
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
    ,{xtype: 'pricelist-combo-resource',fieldLabel: _('pricelist_item_forres'),name: 'forres',id: 'pricelistbyp-'+this.ident+'-forres',anchor: '99%'}
    можно узнать что это поле передает в базу?
    а то должно id выбранного ресурса и в базе поле инт а оно не заполняеться чет
      Евгений Дурягин
      04 августа 2014, 13:53
      Открыть консоль браузера и посмотреть что в запросе на сервер уходит при сохранении.
      У комбобокса должен быть параметр hiddenName: 'forres'
        Иван Микоряк
        Иван Микоряк Старожил
        04 августа 2014, 14:25
        спасибо, работает
      Иван Микоряк
      Иван Микоряк Старожил
      04 августа 2014, 16:50
      <?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
        добавил после
        $limit = $modx->getOption('limit',$scriptProperties,5);
        свой
        $pageid = $modx->getOption('pageid',$scriptProperties,0);
        еще куда то нужно что то добавлять?
          Иван Микоряк
          Иван Микоряк Старожил
          04 августа 2014, 17:31
          то что есть на данный момент иду тестировать
          <?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