Starsza wersja bloga została
przeniesiona pod adres
W tym poście zostały opisane różne przykłady skryptów używane w Joomla 3.6 API, przydatne podczas pisania pluginów, modułow lub komponentów.
To są raczej moje prywatne notatki mogą zawierać błędy i niedomówienia. Bedę to z czasem aktualizował.
Przy programowaniu warto posiłkować się dokumentacją Joomla. Warto pamiętać że w dokumentacji poszczególnych klas przyciski filtrujące clasy to przyciski typu on off a nie switch. Wato o tym pamiętać bo na zle skalibrorowanych monitorach i dla mniej uważnych może się wydawać że dużo funkcji nie jest opisanych.
pobiera rekord o podanym id nie działa w controlerze. Jako nazwe modelu wpisujemy nazwe schemy xml z katalogu forms z dużej litery jako id podajemy primaryKey
okazuje sie że jednak działa w kontrolerze ale trzeba dopisać:
JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_recipes/tables');
$obj = JTable::getInstance('NazwaModelu', 'FscalendarTable', array()); $obj->load($id);
aby podobny skrypt zadziała w controlerze piszemy tak:
$model = $this->getModel('Nazwa model', 'FscalendarModel', array()); $item = $model->getItem();
ustawianie domyślnej wartości w formularzu. polecanie można uzyć w view.html.php np na ukrytych polach. Uzywa się tego w plikach widoku view.html.php
$this->form->setValue('imie', null, $value);
Tak mozna poznać czy jest sie na czesci admin lub site
$app = JFactory::getApplication(); if ($app->isSite()) { echo 'Client is site'; } if ($app->isAdmin()) { echo 'Client is administrator'; }
Tak pobieramy dane z formularza
$item = JFactory::getApplication()->input->get('jform', array(), 'array');
przy używaniu metody $mailer->Send(); trzeba pamietać że metoda ta zwraca tylko true w przypadku powodzenie w przypadku niepowodzenia zwraca obiekt z błędami i innymi rzeczami
Tak pobieramy wartości get i chyba nawet post. pierwszy paramet to nazwa zmiennej druga jaka ma być wartość jak nie będzie zmiennej i trzeci filtr typu
$var = JFactory::getApplication()->input->get('nazwa_zmiennej', null, 'int');
uzywanie zapytania z klauzulą or wykunujemy przy pomocy metodą orWhere
pobieranie parametrów ustawień komponentu
$params = JComponentHelper::getParams('com_nazwakomponetu');
jeżeli w polu typu kalendarz "calendar" przestawia sie godzina mimo prawidłowych ustawien zwiazanych z czasem na serverze itp należy uzyć filtra w xml na tym polu filter="none"
sprawdzanie czy dany komponent jest zainstalowany
if (JComponentHelper::getComponent('com_nazwakomponetu', true)->enabled) { }
dodanie komunikatu do kolejki komunikatów
JFactory::getApplication()->enqueueMessage(JText::_('MOD_TŁUMACZONAFRAZA'), 'error');
Jak odczytać gdzie sie jest
$joomlaApp = JFactory::getApplication()->input; $option = $joomlaApp->getCmd('option'); $view = $joomlaApp->getCmd('view'); $layout = $joomlaApp->getCmd('layout');
JURI::root() VS JURI::base()
Root zawsze daje ścieżkę do głównego korzenia instancji joomla base daje rózne sciezki w zaleznosci od miejsca użycia. po stronie site daje sciezke do głównego folderu aplikacji po stronie admina zwraca sciezke do zaplecza
niestandardowe reguły walidacji pisze sie w katalogu rules a potem przypisuje do pól w xml. metoda test to domyślana metoda która sie uruchmia. Walidacje nie działają na liście tylko przy dodawania i edycji. Może to można zmienić ale nie wiem.
https://docs.joomla.org/J3.x:Server-side_form_validation