ďťż

Generowanie formularzy - XML czy PHP? w logice? w widoku?

       

Podstrony


telcocafe

Potrzebuję rozwiązania umożliwiającego łatwe tworzenie formularzy, szczególnie listy opcji w konfiguracji CMS-a. Które z nich lepiej zda egzamin i dlaczego?

XML lub HTML
Formularze znajdują się w warstwie widoku. Dla ułatwienia definiuje się dodatkowe znaczniki i atrybuty, np. <checkbox>, <radio>, arrayname... Kompilator takiego szablonu zamienia kod XML na kod (X)HTML z instrukcjami warunkowymi w PHP i zmiennymi (chyba, że klasa go nie kompiluje, tylko od razu interpretuje).

PHP
Pola formularza oraz jego właściwości definiuje się w logice skryptu - w kodzie PHP. Na tej podstawie klasa generuje formularz. Tylko jeszcze chyba potrzeba wziąć skądś kod HTML poszczególnych pól - z szablonu?

Przykład: http://www.unit1.pl/pb-762

Bez żadnych ułatwień:
<input type="checkbox" name="name"<!-- IF name --> checked="checked"<!-- END --> />Podobnie w czystym HTML i PHP:<input type="checkbox" name="name" <?= $name ? 'checked="checked"' : '' ?> />
Przykłady z ułatwieniami:Użycie XML - Przykład pola checkbox: <checkbox name="name" /> Użycie PHP - przykład: $form = new Form('...'); $form -> set( /* pola, właściwości */ ); $template -> set('form', $form);
Użytkownik Ferrari edytował ten post 12 kwiecień 2008, 10:45


robisz liba w PHP, który pozwala generować HTML formularza i zmienną z formularzem walisz do szablonu ;)

a jak masz dobrego liba to generowanie i walidacja formularzy sprowadza się do kilku linijek server side. Newforms Django ma dla modelu:
class AddTopicForm(forms.ModelForm): class Meta: model = Topic
czy "własny formularz":
class CommentForm(forms.Form): text = forms.CharField(widget=forms.Textarea) imgtext = forms.CharField() author = forms.CharField(required=False) imghash = forms.CharField(widget=forms.HiddenInput) def clean(self): SALT = settings.SECRET_KEY[:20] if not 'imgtext' in self.cleaned_data or not self.cleaned_data['imghash'] == sha.new(SALT+self.cleaned_data['imgtext'].upper()).hexdigest() : raise forms.Validationerror('Captha Error') return self.cleaned_data

Popatrz na helpera code ignitera ;)

Lepiej zrobić osobny szablon formularza, który jest wypełniany treścią przez php. Potem tylko podstawiasz gotowy, skompilowany szablon formularza do szablonu strony.
Bo generowanie '<form...><fieldset...></...></...>' przez php to ZUO ;-)

2 wypowiedzi -> 2 sprzeczne opinie. :) Z jednej strony generowanie formularzy za pomocą PHP nie wymaga tworzenia osobnych plików prezentacji w widoku, a z drugiej są pewne ograniczenia. Jest jeszcze taka zaleta, że klasa formularza może sprawdzić za nas poprawność danych.

Natomiast gdy formularze będą miały swoje pliki prezentacji, nie uzależniamy ich wyglądu oraz zawartości od klasy PHP. Dla ułatwienia można dodać trochę znaczników i atrybutów, np. checkbox, radio...

Zend_View - sposób pierwszy, OPF - chyba drugi... Pierwszy skraca pracę, a drugi zwiększa możliwości i ją ułatwia.



dobry lib generuje ci formularz, lecz nie gotowy HTML całości (zwraca np. tablicę z poszczególnymi polami i komunikatami błędów dla tychże pól) ;)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.