Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SF][Symfony2] Uniwersalny szablon listy
404
post
Post #1





Grupa: Zarejestrowani
Postów: 226
Pomógł: 25
Dołączył: 22.05.2011

Ostrzeżenie: (0%)
-----


Witam,

w administracji posiadam kilka widoków, na których po prostu listuje dane (np. użytkowników). Chciałbym stworzyć sobie jeden, uniwersalny i konfigurowalny szablon żeby nie kopiować w kółko tego samego kodu. Ok - zadanie nie trudne, ale gdzieś to wszystko trzeba zdefiniować: czy lista ma zawierać wyszukiwanie po danej kolumnie, czy na danej kolumnie ma być włączone sortowanie, czy wartość danego pola ma przejść przez jakieś makro przed wyświetleniem, czy wyświetlić link do danej akcji jeżeli wartość pola jest X itd. Pytanie - gdzie to zrobić? Napisać sobie jakiś ListGenerator (service), czy może definiować to wszystko w Twigu jako obiekt?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
ziolo
post
Post #2





Grupa: Zarejestrowani
Postów: 82
Pomógł: 20
Dołączył: 17.01.2009
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Ja właśnie napisałem generator(Command).

Generuje mi nie tylko listę ale całego cruda dla danego modułu(tabeli). Wygodne, bo nie trzeba już nic kopiować w kółko tak jak mówisz.

Generowanie plików, wzorowałem się na np komendach wbudowanych (generowanie controllera, encji z doctrine).

Go to the top of the page
+Quote Post
404
post
Post #3





Grupa: Zarejestrowani
Postów: 226
Pomógł: 25
Dołączył: 22.05.2011

Ostrzeżenie: (0%)
-----


Hm, tego typu rozwiązania w ogóle pod uwagę nie brałem, ale może coś by z tego było. Mi po głowie chodzi bardziej coś takiego:
  1. // src/Acme/Bundle/User/Controller/UserController.php, listAction
  2. $listGenerator = $this->get('listGenerator');
  3. $listGenerator->enableFilters();
  4.  
  5. $listGenerator->addColumn('Id', 'getId');
  6. $listGenerator->addColumn('Name', 'getName');
  7. $listGenerator->addColumn('Surname', 'getSurname');
  8. // ...
  9. $listGenerator->addAction('acme_user_edit', 'getId', ACTION_EDIT);
  10. $listGenerator->addAction('acme_user_delete', 'getId', ACTION_DELETE);
A potem w Twigu:
Kod
{{ listGenerator.render() }}
Go to the top of the page
+Quote Post
soszin
post
Post #4





Grupa: Zarejestrowani
Postów: 38
Pomógł: 1
Dołączył: 26.10.2012
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Tutaj z pomocą może przyjść DatatableBundle. Generujesz sobie dla konkretnej akcji konkretną tabelke, ustalajac w kontrolerze kolumny do wyswietlenia (na podstawie Entity) Ja polecam: AliChem,
Jedyny (na wiele testowanych) przypadl mi do gustu, ale ma rowniez swoje niedoskonałości. (Sam mam z nim jeszcze kilka problemow ale mam nadzieje ze jestem na dobrej drodze).

Go to the top of the page
+Quote Post
404
post
Post #5





Grupa: Zarejestrowani
Postów: 226
Pomógł: 25
Dołączył: 22.05.2011

Ostrzeżenie: (0%)
-----


Na pierwszy rzut oka wygląda całkiem miło. Przyjrzę się bliżej i dam znać co i jak, dzięki! (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
soszin
post
Post #6





Grupa: Zarejestrowani
Postów: 38
Pomógł: 1
Dołączył: 26.10.2012
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Jako że ja jestem zawsze za własnymi rozwiązaniami to aktualnie pisze wlasnego bundla do obslugi Datatable.
Jak skończe to udostepnie i podam link do repo.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 17:22