Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZF] Form Elements i setDecorators.
siuda
post 5.07.2012, 16:53:09
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 15.03.2012

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


Witam,

Mam pytanie odnosnie użycia dekoratorów przy tworzeniu formularza za pomocą Form Elements. Jeden z layoutów jest przygotowany do pracy z urządzeniami mobilnymi z użyciem jQuery Mobile i mam problem z datą urodzenia. To są 3 inputy typu select, które muszą się zawierać się w jednym <fieldset> i dodatkowo zawierać instrukcję data-role="controlgroup", czyli całosć będzie wyglądała następująco:

<fieldset data-role="controlgroup" data-type="horizontal">
.....
</fieldset>

Czy jest to możliwe do osiągnięcia za pomocą dekoratorów?


Pozdrawiam,
Go to the top of the page
+Quote Post
Pilsener
post 5.07.2012, 20:26:05
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Nikt nie każe korzystać ze standardowego renderowania formularzy - jest to tylko dla wygody, no można coś tam czasem dekoratorem dziergać. Ale jeśli chcesz za pomocą dekoratorów zmieniać cały HTML to odradzam - napocisz się i specjalista od front-endu będzie miał potem problem. Najlepiej użyj po prostu własnego widoku, przecież z obiektu formularza możesz pobrać co trzeba.
Go to the top of the page
+Quote Post
Sephirus
post 6.07.2012, 08:04:45
Post #3





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Nie do końca rozumiem/zgadzam się z przedmówcą...

Jeśli używasz zenda i chcesz mieć to ładnie poukładane to wystarczy utworzyć jakiś nowy element w formie i przypisać do niego odpowiednio szablon html

  1. $pole= new Zend_Form_Element_Text('data');
  2. $pole->setLabel('data')
  3. ->setDecorators(array(array('ViewScript', array('viewScript' => 'sciezka/do/pliku.phtml'))));


w ten sposób możesz tworzyć sobie widoki html zupełnie dowolne... obsłuż w nich jedynie te dane, które przekazujesz do elementu (np label itp).

Jeśli przekazujesz jakieś dane do tego pola to w skrypcie widoku zamień np. date "2012-07-06" odpowiednio tak by do tych selectów wrzucić części daty (rok,miesiąc,dzień).

Przy odczycie forma (wysłaniu post'a) możesz nadpisać metodę forma isValid i dodać w nim sprawdzanie tego pola. Jak dobrze pokombinujesz to jest proste i skuteczne. i zachowujesz w pełni użycie formów, które same się sprawdzają itd... smile.gif


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
Pilsener
post 6.07.2012, 22:29:28
Post #4





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Wiem, że można przypisać widok do elementu formularza ale tutaj problem jest, by zamiast:
  1. echo $this->form;


Wyświetlić np. tak:
  1. <p>Label sobie tutaj: <?php echo $this->form->element->label ?></p>
  2. <p>Tu może input: <?php echo $this->form->element->input ?></p>
  3. </form>


Można też poszczególne elementy formularza:
  1. echo $this->form->element;


Innego sposobu by zaimplementować szybko gotowy kod HTML formularza nie znam. Chyba, że faktycznie chodzi tylko o jeden element.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 12.08.2025 - 02:18