Nowa wtyczka evo_chained_selector
Evo_chained_selector jest rozszerzeniem BE pozwalającym na tworzenie powiązania między rekordami za pomocą tzw “chained selection”.
Geneza powstania tego rozszerzenia wiąże się z wdrożeniem nad którym ostatnio pracowaliśmy. Strona posiada rozbudowaną bazę aktów prawnych których struktura jest następująca:
Akty -> artykuły -> paragrafy i rozdziały -> sekcje
Redaktor podczas wprowadzania nowego rekordu tt_news ma możliwość dowiązania odpowiedniego paragrafu do nowego newsa. Zastanawialiśmy się jak to elastycznie rozwiązać, aby redaktor mógł szybko i efektywnie tworzyć nowe relacje i postanowiliśmy przygotować nową kontrolkę.
Evo_chained_selector to mechanizm oparty na ajaxie który analizuje strukturę tabeli wskazanej w
-
$TCA[$table]['field']['config']['params']['table']
i sprawdza czy wybrany rekord w pierwszym inpucie posiada dzieci jeśli tak to dodaje kolejny input. Zakres rekordów w polu wyboru jest ograniczany dynamicznie podczas wpisywania słowa kluczowego. W ten sposób każdy z poziomów może operować na nieograniczonej ilości rekordów nie powodując przy tym długiego ładowania się formularza edycji rekordu.
Integracja we własnych modułach BE
Relacja jest budowana za pomocą typu TCA user, gdzie w kluczu userFunc należy zdefiniować wywołanie funkcji tx_evochainedselector_client->render.
Tabela do której tworzymy relacje musi mieć strukturę drzewa dlatego klucz parentField powinien odwoływać się do pola parent_uid. (w przypadku tabeli pages: pid).
-
"myfield" => Array (
-
"exclude" => 1,
-
"label" => "Select record",
-
"config" => Array (
-
"type" => "user",
-
"userFunc" => "tx_evochainedselector_client->render",
-
'params' => array(
-
'table' => 'pages',
-
'parentField' => 'pid',
-
'title' => '###title###', // title of records in autocomplete form
-
'searchFields' => 'title', // which fields to search
-
'limit' => 20,
-
'order' => 'title',
-
'additionalWhere' => ''
-
)
-
)
-
),
W polu relacji zapisywany jest ostatni wybrany UID w łańcuchu.
Zrzut ekranu
VIDEO
Do zrobienia
Jest to pierwsza startowa wersja tego rozszerzenia. Wiele rzeczy można poprawić oraz dodać.
Czekam na wasze sugestie i pytania.
Pliki do pobrania:


Jak ponad rok temu pytałem czy można takie coś robić w BE to dostałem odpowiedź, że nie bo BE jest cachowany
. Jeśli utrzymacie takie tępo to za rok zaczniecie robić ciekawe rzeczy po stronie BE powodzenia.
Thank you … this has me very helped.