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"
a {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¶m1=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(...)