Ważnym rozszerzeniem dostępnym dla użytkownika są dwa skrypty 'onload_db.php' oraz 'onload_smarty.php', umieszczone w folderze 'app'. Jak nazwy tych skryptów wskazują, są one uruchamiane jednorazowo w momencie ładowania silnika Smarty oraz odpowiednio bazy danych (Medoo) - czyli pierwszego wywołania metody 'App::getSmarty()' lub odpowiednio 'App::getDB()'.

Daje to możliwość dodania swojego kodu, który powinien być zawsze wykonany po załadowaniu tychże obiektów. Przykładowo, 'onload_smarty.php'
pozwala dodać użytkownikowi do silnika Smarty dane, które zawsze będą mu potrzebne po stronie widoku, jak np. obiekt 'user' w aplikacji uwzględniającej logowania. Natomiast skrypt 'onload_db.php' pozwala wykonać jakieś działania bezpośrednio po poprawnym połączeniu z bazą danych.

 

Domyślna zawartość skryptów onload_db i onload_smarty

Skrypt 'onload_db.php' jest domyślnie pusty. Zawiera jedynie komentarz z przykładem. Natomiast 'onload_smarty.php' zawiera definicję dwóch przydatnych funkcji generowania adresów URL - względnych i bezwzględnych.

Pierwszą funkcją jest {url ...}, a drugą {rel_url ...}, które generują odpowiednio bezwzględny oraz względny adres do systemu. Zatem zamiast przy tworzeniu adresu w widoku Smarty pisać {$conf->action_url}nazwa_akcji, można to zrobić bardziej elegancko {url action="nazwa_akcji"} dla adresu bezwzględnego oraz {rel_url action="nazwa_akcji"} dla adresu względnego.

Przykład (w widoku Smarty):


...

<a href="{url action="hello"}" >odnośnik bezwzględny do akcji 'hello'</a>

...

<form action="{rel_url action="save"}">

...

</form>

 

Można również przekazać parametry (domyślnie jest to clean URLs - czyli bez nazw parametrów - wartości oddzielane znakiem / ) :

zatem {url action="hello" id="15" param1="test"}

wygeneruje np ciąg: "http://localhost/aplikacja/public/hello/15/test"

{rel_url action="hello" id="15" param1="test"}

wygeneruje ciąg: "hello/15/test".

Zakładając, że w systemie nie ustawi się clean URLs ( $conf->clean_urls = false - patrz Konfiguracja) to powyższe funkcje będą generowały adresy z nazwami parametrów według metody GET: "...index.php?action=hello&id=15&param1=test"

Jeśli zaistnieje potrzeba zmieszania clean URLs z metodą GET, to rozwiązanie jest na to gotowe choćby poprzez zwykłe:

{url action="hello"}?id=15

Parametry zwykłą metodą GET (jak powyżej) pozwalają wygenerować metody \core\Utils::url_noclean(...) oraz \core\Utils::rel_url_noclean(...)