Dodajemy dodatkową akcję do formularzy na stronie

0 Komentarze

Dodajemy dodatkową akcję do formularzy na stronie

Zastanawialiście się kiedyś jak dodać dodatkową akcję do formularza np.: dodawania nowego noda czy jego edycji? Po co takie rozwiązanie? - ktoś spyta. Właśnie po to by wykonać dodatkowe operacje na stronie jak np.: zaktualizować inne nody, wyświetlić dodatkowe informacje. Zabrać się do tego można na conajmniej dwa sposoby: jeden to użycie modułu Rules i drugi, który opiszemy w tym wpisie za pomocą własnego modułu.

Na początek stwórzmy własny moduł.

  1. Utwórz katalog custom_module
  2. W tym katalogu utwórz dwa pliki: custom_module.info i custom_module.module
  3. W pierwszym pliku zamieszczamy informacje o nazwie modułu, opisie, wersji drupala lub wymaganych modułach. W naszym przypadku najprościej jak można :
    name = Custom module
    description = Custom module contains functions that are used on site.
    package = Custom
    core = 7.x
  4. Drugi plik to już nasze centrum dowodzenia. Na początku pliku piszemy <?php , a następnie fragment poniższego kodu:
    
    function custom_module_form_alter(&$form, &$form_state, $form_id){
    if($form_id == 'form_name_that_we_want_to_change'){
    $form['#submit'] = array('custom_operations_on_submit');
    }
    }
    function custom_operations_on_submit(&$form, &$form_state){
    drupal_set_message(t('Some informations'));
    }
    
    	
  5. Omówmy w skrócie co dzieje się w powyższym kodzie. Na wstępie odwołujemy się do hook_form_alter czyli funkcji która umożliwia nadpisywanie formularzy na stronie. O hookach na pewno poświecimy jeden z wpisów na stronie, na obecną chwilę pamiętaj, że ta funkcja umożliwia ci na nadpisanie każdego formularza na stronie. Przyjmuje ona trzy parametry: elementy formy, wartości formy po wysłaniu formularza i id formy. W pierwszej kolejności odwołujemy się oczywiście do zmiennej $form_id dzięki której identyfikujemy sobie formę, którą chcemy nadpisać. Następnie odwołujemy się do zmiennej $form, która jest tablicą posiadającą wartość #submit, pole to posiada informację jak nazywa się funkcja, która wykonuje się po kliknięciu przycisku Zapisz na formularzu np. edycji noda. Jako,że jest to tablica to możemy dodać kolejną funkcję, która ma wykonać się po kliknięciu zapisz. W naszym przypadku jest to funkcja "custom_operations_on_submit". Samą funkcję definiujemy w kolejnym fragmencie kodu. Aby potwierdzić, że wszystko przebiegło w porządku wyświetlamy funkcją drupalową wiadomość. Zwróćcie uwagę na fakt użycia funkcji t(). Użycie tej funkcji to dobra praktyka by we własnych modułach wszystkie ciągi znaków służące do wyświetlania informacji dla użytkownika zamykać w funkcji t(). Mówi ona drupalowi ten tekst może być tłumaczony na inne języki dlatego potraktuj ten tekst inaczej.
  6. Na koniec włączamy moduł. Jeśli ktoś włączył moduł przed dodaniem hooka, pamiętajcie o wyczyszczeniu cache'a.
Kategorie: 

0 Komentarze

CAPTCHA
To pytanie sprawdza czy jesteś człowiekiem i zapobiega wysyłaniu spamu.
Graficzne pułapki CAPTCHA
Wprowadź znaki widoczne na obrazku.