Как получить доступ к полю выбора структуры в шаблоне с помощью vm?

Я хочу создать веб-контент Liferay, который будет отображать поле выбора нескольких состояний.

Я создал одно поле выбора в структуре для отображения штатов и дал несколько вариантов, таких как Пенджаб, Карнатака, Керал, ....

Теперь я хочу получить доступ к этим параметрам поля выбора в шаблоне.

Может ли кто-нибудь сказать мне, как получить доступ к полю выбора и его параметрам в шаблоне?

Заранее спасибо :)


person Saha    schedule 13.12.2015    source источник
comment
Вы путаете вещи: структура определяет поля для статьи веб-контента. Если в структуре есть поле выбора, вы определяете, из каких значений может выбирать редактор статьи. Шаблон определяет, как одна статья преобразуется в HTML. Не структура. Вы пытаетесь перестроить редактор веб-контента или пытаетесь настроить форму со своей статьей веб-контента (какой-то построитель форм)?   -  person Tobias Liefke    schedule 14.12.2015
comment
Спасибо за ответ :) .. На самом деле я хочу показать поле выбора с несколькими значениями, используя веб-контент. Поскольку, согласно требованию, все значения должны быть динамическими, поэтому мне нужно создать веб-контент, используя структуру и шаблон. В зависимости от выбранного значения динамические значения будут отображаться в другом раскрывающемся списке//окне выбора. Другими словами, я хочу добиться динамического выбора с помощью веб-контента.   -  person Saha    schedule 14.12.2015
comment
Итак, для этого я добавил одно поле списка выбора с некоторыми параметрами (передал значения для метки и значений) в Структуре. И в шаблоне я пытаюсь получить доступ к этим параметрам.   -  person Saha    schedule 14.12.2015


Ответы (2)


Похоже, вы пытаетесь создать функции портлета с веб-контентом, для чего он не был создан.

Тем не менее: Вы можете получить доступ к структуре с помощью

#set($structureService = $serviceLocator.findService("com.liferay.portlet.dynamicdatamapping.service.DDMStructureLocalService"))
#set($structure = $structureService.fetchDDMStructureByUuidAndGroupId("THE-UUID-OF-YOUR-STRUCTURE", $articleGroupId))

Структура будет содержать опции для вашего поля (см. DDMStructure).

Но если вам действительно нравится подход к веб-контенту, я бы перенес конфигурацию из структуры в статью веб-контента:

Создайте повторяющееся текстовое поле в структуре и добавьте свои состояния в саму статью (подход с помощью конструктора форм). Затем вы можете просто настроить разные параметры для каждой статьи. И вы можете использовать параметры в шаблоне:

<select name="...">
  #foreach ($state in $yourStateFieldName.siblings) 
    <option value="$state">$state</option>
  #end
</select>
person Tobias Liefke    schedule 14.12.2015

Является ли чтение выбранного значения тем, что вы спрашиваете?

Для поля типа select с именем selectionField просто вызовите getData(), чтобы прочитать выбранное значение (в виде строки).

$selectionField.getData()
person Tomas Pinos    schedule 14.12.2015
comment
Я говорю о полном коде (то есть, как мы можем получить доступ к полю выбора в шаблоне, как отобразить все его параметры с помощью шаблона, а затем на основе выбора пользователем параметров, показывая параметры в каком-то другом поле выбора). Например: в обычном HTML мы пишем следующий код: <select> <option value="volvo">Volvo</option> <option value="saab">Saab</option> <option value="mercedes">Mercedes</option> <option value="audi">Audi</option> </select> То же самое я хочу добиться с помощью скорости в шаблоне. - person Saha; 14.12.2015
comment
И затем в зависимости от модели автомобиля, которую выбрал пользователь (например, он выбрал Mercedes), в другом поле выбора будет отображаться его цена, топливо и т. д. - person Saha; 14.12.2015
comment
Кажется плохой идеей реализовать такой вариант использования с журнальными статьями и структурами. Сделайте себе одолжение и создайте портлет. - person Tomas Pinos; 15.12.2015
comment
Требованием клиента является использование журнальных статей и структур. Им не нужен портлет для этого. - person Saha; 28.12.2015