Witam,
Ty razem mam problem z ustawieniem tekstowego pola input w zależności od wybranej opcji pola select. Rzecz dotyczy backendu. Mam pole temat i w zależności jaką wybiorę opcję z listy to wartość (a najlepiej label) ma się wstawiać w formularzu wstawiać w pole temat. Pewnie trzeba przy selekcie wywołać fukcję load_callback i tam ustawiać wartość pola temat. Nie wiem jednak jak się odnieść do tego pola temat.
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!
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!

Jak ustawić wartość pola input text w zależości od wybranej opocji w polu select?
Rozpoczęte przez Jaro_27, Aug 23 2011 18:17
#1
Napisany 23 August 2011 - 18:17

#2
Napisany 23 August 2011 - 19:10

load_callback nie w select, a w polu temat 

public function setDefault($varValue, DataContainer $dc) { switch ($dc->activeRecord->pole_select) { case 'opcja1': $varValue = 'foo'; break; case 'opcja2': $varValue = 'bar'; break; } return $varValue; }
Codefog - Contao web development
#3
Napisany 23 August 2011 - 19:31

Kurcze naszukałem się tej nazwy pola activeRecord i nie znalazłem. Skąd Ty to wziąłeś??
Jak wyświetlam obiekt $dc przez print_r to mam tam tylko objActiveRecord i jak sobie wypisywałem wartość $dc->objActiveRecord->moje_pole to miałem nulla, mimo, że przy print_r($dc) była wartość.

#4
Napisany 23 August 2011 - 20:42

A działa? 
Samego activeRecord nie zobaczysz, bo obiekt faktycznie nazywa sie objActiveRecord:

Samego activeRecord nie zobaczysz, bo obiekt faktycznie nazywa sie objActiveRecord:
# /system/modules/backend/DataContainer.php /** * Active record * @param object */ protected $objActiveRecord; /** * Return an object property * @param string * @return mixed */ public function __get($strKey) { switch ($strKey) { case 'activeRecord': return $this->objActiveRecord; break; default: return null; break; } }
Codefog - Contao web development
#5
Napisany 23 August 2011 - 21:09

Niestety nie do końca działa. Zmienia się pole text w zależności od wyboru selecta, ale po zrobieniu zapisu wartość pola text nie zapisuje się do bazy. Zapisuje się tylko wtedy gdy dodam chociaż jedną literęz palca w polu text. To wtedy jest wartość z selecta + ta moja literka. Nie mam pojęcia co może być przyczyną.
Pole text wygląda tak:
Pole text wygląda tak:
'subject' => array ( 'label' => &$GLOBALS['TL_LANG']['tl_newsletter']['subject'], 'exclude' => true, 'search' => true, 'inputType' => 'text', 'load_callback' => array(array('tl_Newsletter','setSubject')) )a select
'training' => array ( 'label' => &$GLOBALS['TL_LANG']['tl_newsletter']['training'], 'default' => '', 'exclude' => true, 'inputType' => 'select', 'eval' => array('submitOnChange'=>true), 'options_callback' => array('tl_Newsletter', 'trainings') ),No i ta funkcja setSubject podobna jaką napisałeś tylko jest zapytanie mysql i w zależności o wybranej opcji w select zwraca wartość texta, który ładnie się zmienia, ale dopóki nie kliknę w niego i coś nie dopiszę to nie zapisuje się w bazie.
#6
Napisany 23 August 2011 - 21:15

Spróbuj dodać 'alwaysSave'=>true w evalu tematu:
'subject' => array ( 'label' => &$GLOBALS['TL_LANG']['tl_newsletter']['subject'], 'exclude' => true, 'search' => true, 'inputType' => 'text', 'eval' => array('alwaysSave'=>true), 'load_callback' => array(array('tl_Newsletter','setSubject')) )
Codefog - Contao web development
#7
Napisany 23 August 2011 - 21:54

Działa
. Bardzo Ci dziękuję za pomoc.


#8
Napisany 24 August 2011 - 09:37

Witam,
Mam jeszcze jeden mały problem. Jak wybiorę sobie opcję z selecta to przeładowuje mi się storna ('eval' => array('submitOnChange'=>true)) i zmienia się zawartość pola text. I to jest OK. Ale jeżeli nie chcę robić zmian i wychodzę z fomrularza przez "Wróć" to okazuje się, że wartość pola text się nie zapisała do bazy, a selecta się zapisała. Czy da się tak zrobić, żeby ta wartość pola select nie zapisywała się jeśli chcę zrezygnować ze zmian i nie zatwierdzam formularza prze "Zapisz i Zamknij" tylko wychodzę przez wróć. Rozumiem, że ustawienie 'eval' => array('submitOnChange'=>true na selecie powoduje akceptację formularza i zapis danych, a ponieważ na polu text jest load_callback to zapisuje się stara wartość do bazy a dopiero jest ładowana do niego nowa wartość. Mam zatem taki efekt, że jedno pole ma starą wartość (text) a drugie pole(select) ma już nową. Czy da się to jakoś ominąć, żeby przy naciśnięciu "Wróć" nie zapisywały się zmiany formularza do bazy??
Mam jeszcze jeden mały problem. Jak wybiorę sobie opcję z selecta to przeładowuje mi się storna ('eval' => array('submitOnChange'=>true)) i zmienia się zawartość pola text. I to jest OK. Ale jeżeli nie chcę robić zmian i wychodzę z fomrularza przez "Wróć" to okazuje się, że wartość pola text się nie zapisała do bazy, a selecta się zapisała. Czy da się tak zrobić, żeby ta wartość pola select nie zapisywała się jeśli chcę zrezygnować ze zmian i nie zatwierdzam formularza prze "Zapisz i Zamknij" tylko wychodzę przez wróć. Rozumiem, że ustawienie 'eval' => array('submitOnChange'=>true na selecie powoduje akceptację formularza i zapis danych, a ponieważ na polu text jest load_callback to zapisuje się stara wartość do bazy a dopiero jest ładowana do niego nowa wartość. Mam zatem taki efekt, że jedno pole ma starą wartość (text) a drugie pole(select) ma już nową. Czy da się to jakoś ominąć, żeby przy naciśnięciu "Wróć" nie zapisywały się zmiany formularza do bazy??
#10
Napisany 25 August 2011 - 11:17

No tak. To jest minus tego rozwiązania z 'submitOnChange'=>true. Pozostaje wobec tego jedynie wesprzeć się javascriptem. On by rozwiązał problem.
1 użytkowników czyta ten temat
0 użytkowników, 1 gości, 0 anonimowych użytkowników