Только начинаю осваивать InstantCMS, с информацией очень туго (точнее в вики почти не опубликовано ничего), особенно для довольно специфических задач типа поля ввода. Потому разбираюсь в основном на примерах чужого кода, но там тоже далеко не всё необходимое есть.
И потому 1й вопрос к Гуру, надеюсь, хоть кто-то подскажет.
Сейчас создаю внутреннюю часть поля, т.е. то, что видит админ при добавлении поля.
Он должен выбрать тип контента и данные по полям в этом типе. Ну и ещё немного прочего)
Всё работает, НО! Поскольку данные по полям и категориям подгружаются аяксом, при повторном редактировании (в общем, после сохранения) аякс-данные не заполнены. Что логично. Как их заполнить, уже почти понял и нашёл. Но не нашёл, как узнать данные, к примеру, типа контента. Сохранённые ранее.
Что бы сделать первичный вывод аяксовых данных. В "...extends cmsFormField". В "...extends cmsForm" нашёл, но в полях такое не работает.
Прошу прощения за возможную сумбурность, и очень надеюсь на помощь…
Если в спойлере приложить код шаблона вывода поля, то понять сумбурность будет проще)Прошу прощения за возможную сумбурность, и очень надеюсь на помощь...
/assets/fields/поле.tpl.php — вот этот.
нет пока такого)) до шаблонов ещё не добрался. застрял с админской частью.
Если в спойлере приложить код шаблона вывода поля, то понять сумбурность будет проще)
/assets/fields/поле.tpl.php — вот этот.
см. вложениеСейчас создаю внутреннюю часть поля, т.е. то, что видит админ при добавлении поля.
Увидите, что все введенные данные есть там. Т.е. можно проверять, если данные пришли, значит это не первое заполнение формы. А значит надо данные получить, вывести их в поле.
НО! Надо обязательно все фильтровать, доверять данным, пришедшим в $_REQUEST, нельзя.
Мне вот как раз и нужно ЭТО узнать =-(зная какой тип контента у вас выбран
Zau4man, Мне не нужны данные, поступающие с формы. Это нужно отдавать на откуп движка, имхо. Безопаснее, как Вы и указали.
<? ... public function getOptions($options=false){ // тут выбор типа контента. эта часть работает. 'title' => "Тип контента", 'generator' => function($item) { $model = cmsCore::getModel('content'); $tree = $model->getContentTypes(); if ($tree) { foreach ($tree as $item) { $items[$item['id']] = $item['title']; } } return $items; }, )), // тут выбор поля картинки, в зависимости от выбранного выше типа контента. // соответственно, при работе всё работает, выбирается, в базу запись происходит. // но при повторном заходе в "свойства поля" оказывается пустой и не заполненной. 'title' => "Картинка", 'list' => 'ctype_id', 'url' => href_to('content', 'widget_fields_ajax') ), 'items' => $fields_list )), /***************************************************/ // вот так должно доставаться значение $fields_list. Соответственно, в начале метода) $content_model = cmsCore::getModel('content'); $ctype = $content_model->getContentType($options['ctype_id']); $fields = $content_model->getContentFields($ctype['name']);
Который был РАНЕЕ ЗАПИСАН В БД...
Не нашёл...
в В "...extends cmsForm" пример работает. в "...extends cmsFormField" нет. Переменная $options пустая.
=-)
Подскажите (просмотрев предыдущий пост), как узнать, какой тип контента был выбран ранее и хранится в бд? В опциях поля ввода.
Воротить костыли в виде дополнительных запросов в базу сильно не хочется, ведь стопроцентно нужные данные уже вытащены и ждут своего часа...
Неужели никто не знает?..
Содержимое $this удручает:
fieldCer Object ( [title] => _test [sql] => INT(11) UNSIGNED NULL DEFAULT NULL [allow_index] => 1 [var_type] => integer [is_public] => 1 [name] => [element_name] => [filter_type] => [filter_hint] => [element_title] => [cache_sql] => [is_denormalization] => [item] => [is_virtual] => [is_hidden] => ( ) ( ) ( ) [class] => cer [id] => )
Простите, если вопросы совсем нубские…
и до данных из формы я не добрался. пока нужно сделать "опции" поля.увы, данные из формы передаются в форму (cmsForm), а в классе поля формы (cmsFormField) доступны пустые объекты самих полей
class fieldCer extends cmsFormField { public function getOptions(){
Вот про это место я и говорю, что до него ранее сохранённые данные ещё не переданы. Они передаются позже.вот тут надо узнать хоть что-то о поле
github.com/instantsoft/icms2/blob/master/system/controllers/admin/actions/ctypes_fields_options.php#L18