Изменения типа поля формы через хук. Как?

 
Посетитель
small user social cms
МедальПочетный донор проектаАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2551
на сайте
Добрый вечер.
Задача - нужно добавить поддержку автокомплита в поле формы. Создаю в типе контента обычное поле string. Затем в своем компоненте создаю хук, content_poster_form.php
Пишу в нем

Код PHP:
  1. $form->setFieldAttribute(3, 'place', 'autocomplete', array(
  2. 'multiple' => true,
  3. 'url' => href_to('poster', 'autocomplete')
  4. ));//включаем автокомплит
через var_dump вижу, что изменения внесены, но почему то в блок опций :(

Ради интереса создаю поле кодом в этом же хуке

Код PHP:
  1. $fieldset_id = $form->addFieldset( 'Пробное' );
  2. $form->addField($fieldset_id, new fieldString('place', array(
  3. 'hint' => 'Пробное',
  4. 'autocomplete' => array(
  5. 'multiple' => true,
  6. 'url' => href_to('poster', 'autocomplete')
  7. )
  8. )));
и все работает... Как быть?
Виджеты, поля и компоненты для instantcms 2 http://www.zau4man.ru/
InstantCMS Team
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 4361
Zau4man, для точной уверенности вам нужно получить всю структуру, потому что id фиелдсетов могут различаться.

Код PHP:
  1. $structure = $form->getStructure();
Перебрать ее, найти нужное поле

Код PHP:
  1. foreach ($structure as $fs) {
  2. foreach ($fs['childs'] as $f) {
  3. if($f->name == 'place'){
  4. // делаете нужное действие, а именно узнаете id набора
  5. // после чего уже навешиваете автокомплит как вы делали выше
  6. }
  7. }
  8. }
Редактировалось: 1 раз (Последний: 7 августа 2015 в 18:00)
Видео каталог для InstantCMS | Аудио каталог для InstantCMS | Мы Вконтакте | Предложение для спонсоров
Реклама
cms
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3545
Zau4man:
изменения внесены, но почему то в блок опций
потому что $form->setFieldAttribute делает это - $field->setOption(), а вам надо что-то что делает $field->setProperty($key, $value)
Пробуйте как сказал Fuze,
Код PHP:
  1. foreach ($structure as $fs) {
  2. foreach ($fs['childs'] as $f) {
  3. if($f->name == 'place'){
  4. $f->setProperty('autocomplete', array(
  5. 'multiple' => true,
  6. 'url' => href_to('poster', 'autocomplete')
  7. ))
  8. }
  9. }
  10. }
Посетитель
small user social cms
МедальПочетный донор проектаАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2551
на сайте
Спасибо большое, все получилось так, как надо.

Fuze:
вам нужно получить всю структуру, потому что id фиелдсетов могут различаться.

я собирался сделать это позднее, а также упустил из виду класс formfield.php Надо было не откладывать. Пойду ваять дальше.
Виджеты, поля и компоненты для instantcms 2 http://www.zau4man.ru/
В начало страницы
Предыдущая темаСледующая тема Перейти на форум: