Przejdź do głównej treści

Funkcje PHP dostępne w szablonach


Parametry w funkcjach muszą być oddzielone przecinkiem (bez spacji).

Lista funkcji

1. str_replace

Przykład użycia:

{str_replace(#-#,##,documents.dscrpt):h}

Powyższe wywołanie usunie wszystkie wystąpienia znaku "-" z tekstu znajdującego się pod zmienną "documents.dscrpt"

2. trim

Przykład użycia:

{trim(documents.dscrpt):h}

Powyższe wywołanie usunie wszystkie białe znaki z początku i końca tekstu znajdującego się pod zmienną "documents.dscrpt"

3. substr

{substr(documents.dscrpt,2,0):h}

Powyższe wywołanie zwróci tekst ze zmiennej "documents.dscrpt" począwszy od drugiego znaku.

4. strpos / stripos

Opis dokumentu {if:strpos(documents.dscrpt,#123#)}ZAWIERA{else:}NIE ZAWIERA{end:} ciąg: "123"

5. Funkcje porównujące (eq, gt, gte, lt, lte)

!eq(1,2) negacja równości !(1==2)
eq(1,2) jednoznaczne z 1 == 2
gt(1,2) jednoznaczne z 1 > 2
gte(1,2) jednoznaczne z 1 >= 2
lt(1,2) jednoznaczne z 1 < 2
lte(1,2) jednoznaczne z 1 <= 2

Przykład:

{if:gt(vatnote.netto_,0)}
kwota netto jest większa od zera
{end:}

6. Funkcja wykonująca zapytanie SQL

{sql_query(#SELECT street FROM addresses WHERE addrid = (SELECT mainad FROM contacts WHERE contid = {%1})#,event[contid])}

{sql_query(#SELECT ext_id FROM bs_connect_contacts_coherences where int_id = {%1}#,contact.contid)}

Ostatni parametr do którego nie ma odwołania w zapytaniu będzie brany jako nazwa zmiennej. I w takim przypadku, funkcja nie zwróci bezpośrednio wyniku tylko zapisze go do zmiennej o podanej nazwie.

Uwaga!

W szablonach w których dane pobierane są z obiektów w notacji {obiekt.pole} - umieszczając nazwę w poleceniu należy pominąć nawiasy francuskie.

{sql_query(#select 1#,#aqq#)}
{if:aqq}
SUKCES
{end:}

W przypadku zapisania wyniku do zmienne pobranie go odbywa się poprzez odwołanie się do nazwy tej zmiennej jak poniżej:

{aqq[0]}

7. Funkcja wykonująca zdefiniowany raport.

clsnam - dowolny token obiektu obsługiwany przez raporty (np. SELECT * FROM documents WHERE doc_id = {DOC_ID}).

Możliwe jest również użycie zmiennej "params" (uwaga! użyta zmienna w wywołaniu funkcji nie ma znaczników). W niej dostępne są wszystkie filtry raportu.

{output_report(12,#DOC_ID#,documents.doc_id):h}
{output_report(12,#PRC_ID#,7):h}
{output_report(81,##,##,params):h}

Wszystkie dostępne funkcje:

round($val, $precision = NULL);
in_array($val, $array);
array_key_exists($key, $array);
count($array);
implode($delimiter, $array_var, $result_var);
explode($delimiter, $string, $result_var);
wordwrap( string $str [, int $width = 75 [, string $break = "\n" [, bool $cut = false ]]] )
ext_wordwrap( string $str [, int $width = 75 [, string $break = "\n" [, bool $cut = false [, int $parts = NULL [, string $resultVar = NULL ]]]]] )
strpos($haystack, $needle);
stripos($haystack, $needle);
substr($string, $start, $length);
str_replace($from, $to, $source);
trim($string);
preg_quote($str);
preg_replace($from, $to, $source);
date($format, $time = NULL);
number_format( float $number , int $decimals , string $dec_point , string $thousands_sep )
str_pad( string $input , int $pad_length [, string $pad_string= " " [, int $pad_type= STR_PAD_RIGHT ]] )
json_decode($target, $json, $param = TRUE)
sql_query($query[,$var1,$var2,...])
output_report($rep_id, $clsnam, $keyval[, $params])
getFeatureValueAsString($featid, $tblnam, $tbl_id)
moneyToText($n, $intUnits = 'zł', $floatUnits = 'gr')
registerDialog($path) - przykład <div onclick="App.openDialogEx('{registerDialog(#./modules/Dictionaries/Projects/forms/ProjectDialog.inc#)}')">Nowy projekt</div>
formateMailContent($doc_id):h - funkcja formatująca treść zarchiwizowanego maila podobnie jak wydruk domyślny dla maila. Funkcja formatuje tylko treść. Użycie: {formateMailContent(emails.doc_id):h} 
printMainTableHtml() - Drukuje tabelę danego raportu
newObject($objectName, $filepath, $lassName, ...)
callFunc($objectName, $method, ...)
attachmentsList($clsnam, $keyval) - lista załączników jako komponent
array_merge(params,#{"style":{"chart_height":"200px"}}#) - umożliwia złączenie jednej tablicy z inną. Drugi argument należy podać jako JSON.
getValueFromArray($array, $key) - np. $data[0][$column['colnam']] > {getValueFromArray(data[0],column[colnam])} - umożliwia wyciągniecie wartości spod klucza, który jest przechowywany w innej zmiennej.
extractValueFromArray($array, $key, $return_var) - wyciąga wartość tak jak getValueFromArray tylko że wynik zapisuje do wskazanej przez nas zmiennej
formatColumn($phpfun, $value, $params = null) - formatuje nam wartość tak jak kolumny w raportach
printComments($clsnam, $keyval) - drukuje listę komentarzy wraz z polem do ich dodawania (od Ready 6.0.244)

Przykłady

1. Przykład - Operacje arytmetyczne na zmiennych:

{setval(#value#,1)}       - inicjalizajca zmiennej value (value=1)
{setval(#value#,3,#+#)}   - dodawanie (value=4)
{setval(#value#,2,#-#)}   - odejmowanie (value=2)
{setval(#value#,5,#*#)}   - mnożenie (value=10)
{setval(#value#,2,#/#)}   - dzielenie (value=5)

<h2>{value}</h2>          - <h2>5</h2>

{setval(#value#,abc,#.#)} - dopisanie ciągu (value=5abc)


{setval(#parametry[filter_string]#,#doc_id = 10#,#[]#)}   - tworzy/dopisuje wartość do tablicy. parametry Array(filter_string -> 'doc_id = 2')
{setval(#params[style[height]]#,#200px#,#[]#)}            - możliwość rekurencyjnego przypisywania wartości do tablicy.

Przekazany parametr w szablonie do URL + obsługa sprawdzenia jaka strona jest aktywna.

-- wygenerowany link
<a href="./engine/instal/CustomModule/cModule_1?rep_id=25&{{_(STDKID)_}}={v[stdkid]}">{v[stdknm]}</a>
-- sprawdzenie która sekcja jest aktywna
{if:strpos(resultQueries[2][0][result],#NULL#)}
        {output_report(30,##,##):h}
{end:}
--
zapytanie do bazy (resultQueries[2])
SELECT '{STDKID}' AS result

2. Przykład - Użycie newObject i callFunc

  1. newObject - funkcja umożliwiająca utworzenie obiektu w PHP gdzie parametry to

    • objectName - nazwa naszego obiektu pod którą będzie dostępny w obrębie danego szablonu flexy
    • filepath - ścieżka do pliku (klasy) w którym istnieje definicja naszego obiektu. Ważne jest to, że plik musi znajdować się w lokalizacji ./scripts. Ścieżka może wskazywać na dowolną lokalizację w apps/edokumenty/scripts czyli może to być np. apps/edokumenty/scripts/moje_flexy/inne/Klasa.php
    • className - nazwa klasy, której definicja jest w filepath. Nazwa klasa nie jest odczytywana z nazwy pliku także należy ją jawnie podać.
    • ... (3 kropki) - dowolne argumenty, które zostaną przekazane jako tablica do obiektu naszej klasy

    Przykład wywołania:

    {newObject(#mojObiekt#,#MojaKlasa.inc#,#Klasa#,#1#,#2#,#3#)}
    
  2. callFunc - funkcja umożliwiająca wywołanie metody na wcześniej zadeklarowanym obiekcie

    • objectName - nazwa wcześniej zadeklarowanego obiektu (#mojObiekt#)
    • method - nazwa metody dostępnej w klasie #Klasa#
    • ... (3 kropki) - dowolne argumenty, które zostaną przekazane do metody method

Oznacza to, że zostanie utworzony obiekt $mojObiekt = new Klasa([1,2,3]);

Przykład wywołania metody dodajLiczby (musi być dostępna w klasie #Klasa#) dla wcześniej zadeklarowanego obiektu mojObiekt:

{callFunc(#mojObiekt#,#dodajLiczby#,#4#,#5#,#6#):h}

Co da nam wywołanie metody dodajLiczby na obiekcie mojObiekt klasy Klasa. Przykład klasy w załączniku.

3. Przykład - Pobranie wartości KEYVAL z pierwszego znaczonego rekordu

  • dla eDokumenty:
<button onclick="var keyval = App.{LIST_NAME}.getSelected()[0]; if (keyval === undefined) keyval = false; alert(keyval);return false;">Sprawdź wartość KEYVAL pierwszego zaznaczonego rekordu</button>
{printMainTableHtml()}
  • Dla Ready_™
<button onclick="var keyval = App.{LIST_NAME}.getSelected()[0]; if (keyval === undefined) keyval = false; alert(keyval);return false;">Sprawdź wartość KEYVAL pierwszego zaznaczonego rekordu</button>
{printMainTableHtml():h}

4. Przykłady do formatowania wartości za pomocą formatColumn

Funkcja ta jest wykorzystywana do formatowania kolumn w raportach.

formatColumn(#processState#,resultQueries[1][0][tpstid]) -- formatuje na status
  • dateTime - Formatuj datę i godzinę
  • date - Formatuj datę
  • hourWithMinutes - Formatuj godzinę z minutami
  • money - Formatuj kwotę
  • moneyInt - Formatuj kwotę do liczby całkowitej
  • percent - Formatuj procent
  • number - Formatuj liczbę
  • time - Formatuj czas
  • formatMinutes - Formatuj minuty
  • externalContid - Formatuj link do kontaktu
  • externalopenDialogByCls - Formatuj link do ... w formacie: CLSNAM|KEYVAL|Opis do wyświetlenia|eic-ikona np. DOCUMENT|123|Otwórz dokument|eic-document
  • processState - Formatuj status
  • checkmark - Formatuj typ logiczny

5. Przykład wydruku komentarzy dla dokumentu

Funkcję zawsze należy umieścić w elemencie DIV, który będzie miał ustawioną szerokość i wysokość.

<div class="row">
    <div class="col-md-10">
        <h4>Komentarze</h4>
    </div>
</div>
<div class="row">
    <div class="col-md-12">
        <div style="width: 100%; height: 400px;">
            {printComments(#DOCUMENT#,resultQueries[0][0][doc_id]):h}
        </div>
    </div>
</div>
Wynik renderowania komentarzy przez Flexy
Wynik renderowania komentarzy przez Flexy