Orbeon Form Builder - ссылка на элемент управления в шаблоне раздела - PullRequest
3 голосов
/ 29 сентября 2011

У меня есть несколько форм, которые все ссылаются на шаблон раздела «Заголовок». Я хотел бы сослаться на элемент управления в этом разделе шаблона из другого элемента управления в форме. (Используя метод, показанный здесь: Запишите ограничение для проверки поля на основе значения, введенного в другом поле в Orbeon Form Builder )

Я получаю следующую ошибку, когда пытаюсь сослаться на элемент управления с именем 'section' в шаблоне раздела:

Необъявленная переменная в автономном выражении: $ section

Вот выражение XPath, которое я использую:

if($section = 'PKP' or $section = '') then true() else false()

В шаблоне раздела есть элемент управления с именем 'section', но, похоже, он недоступен из остальной части формы.

Кто-нибудь знает, можно ли ссылаться на элемент управления, который находится в «шаблоне раздела» в конструкторе форм Orbeon?

Ответы [ 2 ]

5 голосов
/ 29 сентября 2011

Как вы заметили, вы не можете получить доступ к значению поля шаблона раздела вне этого раздела, используя имя $gaga, при условии, что имя поля gaga.Это потому, что в вашей форме может быть несколько «экземпляров» одного и того же шаблона раздела.Представьте, что у вас есть шаблон раздела «адрес», и вы дважды вставляете его в форму для «адреса выставления счета» и «адреса доставки».Тогда, если вы используете $city вне этих шаблонов разделов, вы не будете знать, относится ли оно к полю City в адресе выставления счета или доставки.

Вместо этого при добавлении шаблона раздела в форму вы 'Я хочу присвоить имя этим разделам (скажем, billing-address) и использовать выражение XPath, такое как /form/billing-address/city, чтобы ссылаться на значение поля города в адресе выставления счета.

0 голосов
/ 29 сентября 2011

Я не использую Form Builder для разработки форм, но из-за ошибки, посмотрите, есть ли код для объявления переменных для $ section. Все, что начинается с $, подразумевается как переменная, поэтому требуется объявление переменной. Если переменная объявлена, соответствующая строка может выглядеть так:

<xxforms:variable name="section" select="<some_xpath_expression_here>" />

Если вы не хотите использовать переменную, попробуйте сослаться на набор узлов. Вы можете написать набор узлов таким образом, предполагая, что «section» находится в экземпляре модели «my-instance».

if(instance('my-instance')/section = 'PKP' or instance('my-instance')/section = '') then true() else false()
...