Symbole zastępcze

Odwołanie do innego pola, stałej lub bieżącego użytkownika przez $(...)

  1. Czym jest symbol zastępczy
  2. Do czego może odwoływać się symbol zastępczy
  3. Sięganie w głąb wartości
  4. Jak wartość jest wstawiana
    1. Grawisy i ${ w wartości
  5. Zobacz też

Czym jest symbol zastępczy

Symbol zastępczy to odwołanie zapisane jako $(reference). Zanim tekst, który go zawiera, zostanie użyty, symbol jest zastępowany wartością.

Symbole zastępcze działają we właściwościach pola expression, query i default (obliczanej przy evalDefault), a także w label, help i placeholder. Pole, które zawiera symbol zastępczy, zależy od pola, które ten symbol wskazuje: czeka, aż tamto pole będzie miało wartość, i jest obliczane ponownie przy każdej zmianie tej wartości. W ten sposób buduje się kaskadowe listy rozwijane.

- name: city
  type: enum
  values: [Amsterdam, Brussels]
- name: datacenter
  type: enum
  dbConfig: CMDB            # a database of Connections > Databases
  query: select name from cmdb.datacenter where city='$(city)'

Do czego może odwoływać się symbol zastępczy

Symbol zastępczy wskazuje pole formularza albo jedną z poniższych wartości, które ma każdy formularz:

Odwołanie Co zawiera
$(field) wartość innego pola formularza
$(name), stała stała z config.yaml albo wartość z varsFiles formularza
$(__user__) zalogowany użytkownik: username, type, groups, roles
$(__parent__.field) w podformularzu (wiersz listy, krok kreatora) wartość formularza nadrzędnego
expression: "'$(__user__.username)'"
expression: $(__user__.groups)

Sięganie w głąb wartości

Notacja kropkowa i indeksowa odczytuje część wartości, o ile ścieżka zawiera tylko litery, cyfry, _, -, . i [n]:

Symbol zastępczy Na Daje
$(field) polu tekstowym, liczbowym lub haśle wartość
$(field) polu enum z rekordami placeholderColumn wybranego rekordu, a w przeciwnym razie jego pierwszą kolumnę
$(field.col) polu enum z rekordami tę kolumnę wybranego rekordu
$(field) polu enum z multiple: true wybraną kolumnę każdego zaznaczonego rekordu, jako tablicę
$(field) wyrażeniu, liście lub stałej całą wartość (lista daje swoje wiersze)
$(field.a.b), $(f[0].x) wyrażeniu, liście lub stałej tę część obiektu lub tablicy

Ustawienie placeholderColumn: "*" w polu enum sprawia, że $(field) daje cały wybrany rekord zamiast jednej kolumny.

- name: city
  type: enum
  dbConfig: CMDB
  query: select id, name from cmdb.city
  valueColumn: name
  placeholderColumn: id        # $(city) gives the id; $(city.name) still gives the name
- name: servers
  type: expression
  expression: "[{name: 'web1'}, {name: 'web2'}]"
  runLocal: true
- name: first_server
  type: expression
  expression: $(servers[0].name)   # 'web1'
  runLocal: true

Jak wartość jest wstawiana

Sposób wstawienia wartości do tekstu zależy od miejsca, w którym stoi symbol zastępczy.

Gdzie Przykład Staje się
w wyrażeniu, poza cudzysłowem $(count) + 1 literałem JavaScript: liczba zostaje liczbą, tekst staje się ciągiem w cudzysłowie, obiekt lub tablica literałem
w wyrażeniu, jako cały ciąg w cudzysłowie fn.fnLs('$(dir)') tym samym literałem, łącznie z cudzysłowem, więc wartość zawierająca cudzysłów nie może się z niego wydostać
w wyrażeniu, wewnątrz dłuższego ciągu '$(dir)/vars' tekstem, poddanym escapowaniu dla tego ciągu
w zapytaniu, etykiecie, tekście pomocy where city='$(city)' tekstem

Pole, którego symboli zastępczych nie da się jeszcze wszystkich rozwiązać, nie jest obliczane; przy ignoreIncomplete: true brakująca wartość jest wstawiana jako undefined.

Grawisy i ${ w wartości

Od wersji 7.3.0 wartość pola nie może zostać wykonana jako kod, gdy serwer wstawia ją do wyrażenia (wyrażenia zdalne, weryfikacja uruchomienia, MCP i czat). Grawis lub ${ w wartości jest zapisywany jako sekwencja unicode (\u0060, \u0024{), więc pozostaje tekstem nawet wewnątrz literału szablonowego. Wyrażenia po stronie serwera w ogóle odrzucają literały szablonowe; do nich używaj runLocal.

Wyrażenie runLocal obliczane w przeglądarce wstawia wartość tak, jak mówi powyższa tabela, bez tego escapowania, więc nie umieszczaj tam symbolu zastępczego wewnątrz literału szablonowego.


Zobacz też

Powiązane strony i wpisy FAQ: