Skocz do zawartości

Witamy na polskim forum Contao
Zarejestruj się teraz, aby skorzystać ze wszystkich funkcji forum. Kiedy się zalogujesz, będziesz mógł tworzyć tematy, pisać posty, rozdawać punkty reputacji, korzystać z prywatnych wiadomości i zarządzać swoim profilem. Jeśli posiadasz już konto, zaloguj się - w przeciwnym wypadku zarejestruj się już teraz!
Zdjęcie

Subpalety dla pola select w backendzie.


  • Zaloguj się, aby dodać odpowiedź
8 odpowiedzi w tym temacie

#1
Jaro_27

Jaro_27

    Doświadczony

  • Zarejestrowani
  • PipPipPip
  • 60 postów
Chciałem zrobić taki mechanizm abyw zależności o wybranej opcji z pola select pojawiały się odpowiednie pary pól <input type="text">. Tzn wybieram z listy pozycję 1 pokazuję się 2 pola typu text, wybieram 2 pozycję pokazują się m 4 pola itd. Doszedłem do tego jak to zrobić, gdy jest checkbox np. addFile. Definicja subpalettes w przypadku checkboxa działa elegancko. Pojawiają się nowe pola bez przeładowywania, lecz nie mogę tego efektu osiągnąć przy polu select. A może da się zrobić przez podpięcie skryptu javascript pod zdarzenie onChange dla pola select. Ale jak podpiąć taki skrypt??
  • 0

#2
qrczak

qrczak

    Ekspert

  • Zarejestrowani
  • PipPipPipPipPip
  • 415 postów
  • LokalizacjaŻuławy
Nie jestem pewien, ale zdaje się że subpalety można załadować jedyne poprzez checkboxa. Wiem, że było to poruszane na głównym forum i użytkownik ga.n podał jakieś rozwiązanie tego problemu.
  • 0

#3
Jaro_27

Jaro_27

    Doświadczony

  • Zarejestrowani
  • PipPipPip
  • 60 postów
Nie mogę tego znaleźć. Może masz linka do tego rozwiązania. A wiesz może jak podpiąć funkcję javascript pod pole select??
  • 0

#4
Kamil

Kamil

    Contao ambassador

  • Administratorzy
  • 1 538 postów
  • Strona www:zobacz
  • LokalizacjaLidzbark Warminski
Zobacz na przykład jak to jest zrobione w /system/modules/backend/dca/tl_content.php, mianowicie chodzi o "accordion". Z tym że jest tam bodaj pole radio, ale to łatwo przerobić na select.
  • 0

Codefog - Contao web development


#5
Jaro_27

Jaro_27

    Doświadczony

  • Zarejestrowani
  • PipPipPip
  • 60 postów
Zrobiłem tak jak radziłeś. Ale nie do końca mnie to satysfakcjonuje, ponieważ przeładowuje się strona i zostaje submitowany formularz. I teraz jeżeli jakieś pola są obowiązkowe do wypełnienia to w przypadku ich nie wypełnienia i wybraniu opcji radio buttona, formularz wywala błędy, że pola nie zostały wypełnione. Wolałbym to zrobić na zasadzie checkboxa, który do pokazania dodatkowych pól wykorzystuje ajaxa. Czy jest możliwość zatem podpiąć javascript pod takiego selecta lub radiobuttona, tak aby były odsłaniane luby ukrywane bloki z odpowiednimi polami formularza?
  • 0

#6
Kamil

Kamil

    Contao ambassador

  • Administratorzy
  • 1 538 postów
  • Strona www:zobacz
  • LokalizacjaLidzbark Warminski
Możesz zrobić to za pomocą javascriptu i metod .show() .hide(), ale wtedy ukryty input nie może być wymaganym (mandatory=>true). Tu jak dołączyć swój javascript do backendu w configu jakiegoś modułu:

$GLOBLAS['BE_MOD']['news']['javascript'] = 'system/modules/news_myExt/html/scripts.js';
lub jeśli to jest twój moduł napisany od zera

array_insert($GLOBALS['BE_MOD']['content'], 0, array
(
    'moj_modul' => array
    (
        'tables'     => array('tl_mojmodul'),
        'javascript' =>'system/modules/twoj_modul/html/scripts.js'
    )
));
Ponadto wydaje mi się, że gdzieś już coś takiego widziałem, spróbuj może poszukać na oficjalnym forum lub w repozytorium rozszerzeń.
  • 0

Codefog - Contao web development


#7
Jaro_27

Jaro_27

    Doświadczony

  • Zarejestrowani
  • PipPipPip
  • 60 postów
Dzięki za podpowiedź. Zrobiłem to w javascripcie. Ale mam jeszcze jeden problem. Mój moduł składa się z dwóch części. Listy pozycji i potem edycji danego rekordu. Analogicznie jak np. newsy. I teraz script ładuje mi się również przy prezentacji tej listy i wywala mi błędy, bo nie tam elementów o id, na których pracuje skrypt. Jak zatem zrobić, aby skrypt był ładowany w module tylko przy akcji edycji. W ścieżce jest parametr act=edit wtedy ustawiany, ale nie wiem czy mogę go wykorzystać w moim skrypcie js.
  • 0

#8
Kamil

Kamil

    Contao ambassador

  • Administratorzy
  • 1 538 postów
  • Strona www:zobacz
  • LokalizacjaLidzbark Warminski
Na przykładzie newsów możesz zrobić tak, gdzie tl_news jest tabelą twojego modułu:

if ($('tl_news'))
{
    // tutaj twój kod
}

  • 0

Codefog - Contao web development


#9
Jaro_27

Jaro_27

    Doświadczony

  • Zarejestrowani
  • PipPipPip
  • 60 postów
Dokładnie właśnie tak zrobiłem zanim mi odpowiedziałeś. Ale jeszcze raz bardzo Ci dziękuję za wszelkie porady. Bardzo mi pomogłeś i zrobiłem to wreszcie tak jak chciałem.
Pozdrawiam.
  • 0




Użytkownicy przeglądający ten temat: 1

0 użytkowników, 1 gości, 0 anonimowych użytkowników