--=REKLAMA=--

J3.2

Tworzenie prostego modułu/Pola formularza

Z Joomla!WikiPL

Wersja Zwiastun (dyskusja | edycje) z dnia 00:20, 23 gru 2013

(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)

Pola formularza są wspaniałym sposobem na personalizację w Joomla! i w przypadku modułów są dobrą metodą na dostosowanie ich do swoich potrzeb.

Dodawanie pól formularza do modułu

W tym przypadku rozbudujemy wcześniej przytoczony przykład pobierający listę języków z bazy danych, do umieszczenia jej w rozwijanej liście formularza. Do wykonania tego zadania użyjemy pola formularza typu SQL (więcej na ten temat znajdziesz na stronie Pole formularza typu SQL).

Pierwsze co musimy zrobić to dodać pole formularza do naszego pliku XML. Pamiętasz tag w pliku deskryptora, który dodaliśmy nieco wcześniej? W tym własnie tagu dodamy teraz następujący kod:

<fields name="params">
    <fieldset name="basic">
        <field name="lang" type="sql" default="1" label="Wybierz język" query="SELECT id AS value, lang FROM #__helloworld" />
    </fieldset>
</fields>


Powyższy kod wybierze dostępne języki z bazy danych i wyświetli użytkownikowi pole listy rozwijanej, umożliwiając mu wybór jednego z języków.

Jeśli twój moduł jest już zainstalowany i znajdujesz się na stronie zarządzania swoim modułem w zapleczu administracyjnym, możesz zobaczyć, że pojawiło się tam nowe pole listy rozwijanej (niemniej zmiana wartości w tym polu, nie będzie na razie przynosiła żadnych rezultatów).

Uwaga: Parametry pola formularza są zapisywane dla każdego modułu w tabeli # __modules pod polem params jako zakodowany ciąg JSON.

Teraz sprawmy by pole wykonywało swoje zadanie!

Przejdźmy do pliku mod_helloworld.php i odbierzmy nasz parametr (pamiętaj, że nie możesz pobrać parametru w pliku z klasą pomocniczą), a następnie przekażmy go do funkcji w klasie pomocniczej.

/**
  * Tutaj odbieramy wcześniej zdefiniowany parametr z językiem. 
  * Zwróć uwagę na jego drugą część, gdzie definiujemy jego domyślą
  * wartość na 1, jeśli z jakiegoś powodu nie możemy pobrać wartości 
  * zdefiniowanej w polu formularza.
**/
$language = $params->get('lang', '1');
$hello = modHelloWorldHelper::getHello( $language );

Teraz musimy edytować zapytanie do bazy danych z naszej klasy pomocniczej, tak aby poprawnie funkcjonowało z nowym parametrem.

//Uzyskujemy połączenie z bazą danych
$db = JFactory::getDbo();
//Pobieranie powitania - zauważ że teraz w warunku umieszczamy pole id a nie lang
$query = $db->getQuery(true)
            ->select($db->quoteName('hello'))
            ->from($db->quoteName('#__helloworld'))
            ->where('id = '. $db->Quote($params));
//Przygotowanie zapytania
$db->setQuery($query);
//Wczytanie rezultatów
$result = $db->loadResult();
//Zwrócenie powitania
return $result;

Podsumowanie

Pola formularza są prostym sposobem na personalizację modułów do potrzeb strony użytkownika. Pozwala to na zwiększenie zastosowań modułów oraz dostosowanie ich do różnych języków i aplikacji.

© Ten materiał jest dokładnym albo swobodnym tłumaczeniem artykułu http://docs.joomla.org/J3.2:Creating_a_simple_module udostępnionego na licencji JEDL na witrynie: Oficjalnej dokumentacji Joomla!.Pierwszy autor oryginału: Wilsonge.
© Tłumaczenie: Robertm. Tłumaczenie wykonano na warunkach licencji JEDL.