![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 11.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Raczkuje w OOP.
Napisałem nasępujący powiedzmy sobie szczerze 'bardzo prosty generator formularza'.
No i moj formularz tworze nastepujaco:
Czy jest to w miare poprawne? Czy musze inaczej do tego podejsc? Jezeli tak, to jak? |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
A moze cos w ten desen:
Form to obiekt formularza. Gdzie pierwszy parametr to nazwa formularza, drugi to akcja do wywolania, trzeci to metoda itd. Zmienne te mozna takze byloby ustawic przez $form->name, $form->action itd. Input to pole typu input (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Gdzie pierwszy parametr w konstruktorze to name. SubmitButton dziedziczy po Input,przeslaniajac prametr type na "submit". Wszystkie klasy dziedzicza po klasie HtmlObject ktora zawierala by podstawowe zmienne jak name, id, class (w RFC do HTMLa jest szczegolowo opisane jakie sa podstawowe atrybuty dostepne w kazdym z elementow). Metoda Form::add() dodaje do listy obiekty, ktore maja sie znajdowac w formularzu i zwraca "obiekt samej siebie" (dzieki temu mozemy korzystac ze struktury ->funkcja()->funkcja()->funkcja() etc. Klasa Form przeslania metode __toString() w ktorej to przechodzi po wszystkich obiektach, ktore zostaly dodane przez funkcje add() i wywoluje na nich metode __toString() dolaczajac ja do swojego kodu wynikowego. Jako, ze klasa Form przeslania __toString() mozemy uzyc prostego echo $form. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 10 Dołączył: 13.02.2007 Skąd: Rybnik Ostrzeżenie: (0%) ![]() ![]() |
Z nudów, napisałem sobie klasę, opierając się na tym, co napisał @Seth:
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 11.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
dzieki wielkie, zaraz bede analizowal (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 651 Pomógł: 28 Dołączył: 4.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Można by dodać do tej klasy jeszcze labele i np. paragrafy <p> zamiast tego setLimit() (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) .
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Można by skorzystać z formularzy w symfony 1.1, albo się na nich wzorować. Jak dla mnie są naprawdę nieźle zrobione (z tego co wyczytałem wzorowali się na formularzach z django).
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 255 Pomógł: 5 Dołączył: 20.03.2007 Skąd: Kraków Ostrzeżenie: (30%) ![]() ![]() |
Wszystko pieknie ladnie, ale co jak trzeba pozniej to wystylowac? Pododawac classy cssowe? Ujac w rozne divy rozne elementy? Czy sobie poradzi z tym templater? Najlepiej uzywac prostych helperow do poszczegolnych elementow w templacie, albo w ogole bez helperow (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Ten post edytował domis86 2.01.2008, 19:15:32 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 11.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Można by dodać do tej klasy jeszcze labele i np. paragrafy <p> zamiast tego setLimit() (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) . to tam jest najmniejszy problem. Z dodaniem klas itd. Problem tkwi w napisaniu tego poprawnie w OOP (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ja sobie powoli cos 'powaznego' z tego tworze (wykorzystujac np. labele, css). Dzieki Seth i matrix za pomoc. |
|
|
![]()
Post
#9
|
|
Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
np (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Co do helperow i symfony, to nie sa one przeciez obiektowe. A o to chodzilo zietasowi. Poza tym nie widze zadnego problemu aby dodac np. w konstruktorze dodatkowy parametry dla wyboru klasy czy wpisania stylu. Co do setLimit to mozna by to obejsc przez stworzenie obiektu Paragraph (<p>) w taki sposob:
OBiektowka pelna geba (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Nawiasem mowiac ciekawie zrobiono to w Prado - identyczna funkcjonalnosc jak ta w ASP.NET (kontrolki webowe). Tutaj sa przyklady uzycia wraz z kodem zrodlowym: http://pradosoft.com/demos/quickstart/?pag...ntrols.Standard Ten post edytował Seth 5.01.2008, 11:10:40 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Seth ale nikt nie pisał tutaj o helperach z symfony, które rzeczywiście nie są obiektowe. Pisałem o formularzach w symfony1.1 a są one tam całkowice inne niż w niższych wersjach. Pełna obiektowość (widgety "zastąpiły" helpery) no i można konfigurować formatownie formularza.
Dorzucę linki: http://www.thatsquality.com/section-name/symfony http://redotheweb.com/2007/12/21/sfforms-t...sing-component/ http://www.aide-de-camp.org/talk/7/interna...007?position=40 http://trac.symfony-project.com/browser/branches/1.1/lib Ten post edytował destroyerr 5.01.2008, 13:59:28 |
|
|
![]()
Post
#11
|
|
Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
Hmm ciekawe, ale z pierwszego linku kod nie wydaje mi sie zbyt intuicyjny.
Chociaz tak samo mowilem kiedy zobaczylem ta mase katalgow jakie symfony tworzy, a teraz juz sie przywyczailem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 01:55 |