Каким методом модели воспользоваться, чтобы получить список предустановленный значений поля с типом "Список" (fieldList)?

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 4 марта 2016 в 01:43
Добрый день!

Документация в вики для разработчиков еще не заполнена полностью, поэтому прошу помощи у знающих людей.
Каким методом модели
  1. $model = cmsCore::getModel('content');
воспользоваться, чтобы получить список предустановленный значений поля с типом "Список" (fieldList)?



Собираю форму и не могу найти метод, который подтянул бы значения.
  1.  
  2. new fieldList('name_field', array(
  3. 'generator' => function($item) {
  4.  
  5. $model = cmsCore::getModel('content');
  6. ...
  7.  
  8. return $items;
  9.  
  10. }
  11.  
Заранее спасибо.
#2 4 марта 2016 в 05:42
В другой теме разбирали это напомню:

  1.  
  2. new fieldList('id_tariff', array(
  3. 'title' => LANG_ABONENT_DOGOVOR_SELECTTARIFF,
  4. 'generator' => function () {
  5. $model = cmsCore::getModel('abonent');
  6. $list = $model->getTdogovorAll(); // Модель выборки из базы данных значений
  7. $items = array();
  8. foreach ($list as $item) {
  9. $items[$item['id']] = $item['name_tarif']; // формируем id это value, а имя тарифа это Название
  10. }
  11.  
  12. return $items;
  13.  
#3 4 марта 2016 в 07:47
kirkr,
эту тему даже видел, когда искал ответ на свой вопрос. Но

  1. $model = cmsCore::getModel('abonent');
это самописная модель не входит в стандартную поставку. Мне не хочется плодить и писать свою модель. А хочу переиспользовать стандартный функционал

  1. $model = cmsCore::getModel('content');
ведь как-то сейчас это выводится?
#4 4 марта 2016 в 11:16
LuckyRain, Вы не внимательно читаете, getModel указывает от какого компонента вызывать модель! т.е. из какого компонента брать модель, в документации кстати разжевано.
#5 4 марта 2016 в 22:48

LuckyRain, Вы не внимательно читаете, getModel указывает от какого компонента вызывать модель! т.е. из какого компонента брать модель, в документации кстати разжевано.

kirkr

Про это в документации читал и понял. Вопрос в том, что когда я взял модель от стандартного компонента 'content', то хочу воспользоваться его методом, который возвращает список предустановленных значений поля. А вот наименование это метода мне его неизвестно, о чем и спрашиваю! Знаю что такой метод должен быть. Вот вы в примере используете метод getTdogovorAll, а я хочу использовать аналогичный, только из поставки, типа
$model = cmsCore::getModel('content');
$list = $model->возращаем_список_предустановленных_значений();

Нужно наименование метода.
#6 5 марта 2016 в 03:47
филды возьми и всё встанет на свои места, правда… Но это поправимо
меня немножко бесит, что всё типа ПДО, а пдо там и моль не ела, Сраный sql?, а если не секъюл? Таже самая Мария. хОЧУ pdo
#7 5 марта 2016 в 03:57
prepare наше всё и не надо гонять неизвестно что, внедрить PDO и всё — ипи… как хотитесь.
#8 5 марта 2016 в 05:14
LuckyRain, А залезть в файлик \system\controllers\content\model.php уже лень?

Там даже разделы подписаны, функции на аглицком названы, но гугл транслейт вам поможет суть понять. Если Вы сами не будите изучать, то проще заказать готовое.

А в папке \system\controllers\content\forms

Вы увидите пример форм и функций вызова.
#9 5 марта 2016 в 08:07
kirkr, спасибо за диалог.

LuckyRain, А залезть в файлик \system\controllers\content\model.php уже лень?

kirkr
Нет не лень. Первым делом туда и залез. Но ничего подобного не нашел, поэтому и задал вопрос сюда. Так как есть понимание, что он должен быть и размещаться на мой взгляд должен был в модели. Но разработчики cms пошли другим путем smile

Вчера ночью все же разобрался: В чистом виде как я себе это представлял, такого метода нет!

Стандартный компонент работает следующим образом:
1. метод действия контроллера actionContentItemAdd через
$model->getContentFields($ctype_name, $item_id = false)
получает список полей контента со всеми возможными атрибутами, включая и интересующее меня поле "values"
2.Дальше через $form = $this->getItemForm начинает собирать форму без использования шаблона.

В итоге переиспользовать (как я хотел) не получится. Напишу в своей модели свой метод, у которого
на входе: будет тип контента, наименование поля
на выходе: список предустановленных значений
#10 6 марта 2016 в 15:05
LuckyRain, покажите ввиде html что получить хотите? помогу
#11 11 марта 2016 в 22:22

LuckyRain, покажите ввиде html что получить хотите? помогу

kirkr
Спасибо за предложение, но справился сам (отдельное спасибо разработчикам ICMS 2 за понятный красивый код)!
Код в форме :

  1. new fieldList('count_guest', array(
  2. 'title' => 'Кол-во гостей',
  3. 'generator' => function(){
  4. $model = cmsCore::getModel('boock');
  5. return $model->getPresetValuesField('count_guest');
  6. }
  7. ))
  8.  
Код в моделе
  1. // Получение предустановленных значений заданного поля
  2. public function getPresetValuesField($field_name){
  3.  
  4. $table_name = $this->table_prefix_ctype. '_fields';
  5. $item = $this->getItemByField($table_name, 'name', $field_name);
  6.  
  7. return explode("\r", $item['values']);
  8. }
И вот что получилось на страничке:
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.