Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [klasa]formularz, php5
Spawnm
post
Post #1





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




download

Wczoraj w wolnej chwili takie coś napisałem ... i postanowiłem że się podzielę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Klasa ma za zadanie generowanie formularza html .

Użycie :

klasę zaczynamy tak:
  1. <?php
  2. $form=new form($action,$method,$enctype,$fieldset,$style);
  3. ?>


przesłanie danych nie jest obowiązkowe , jeśli nic nie wpiszemy form będzie przesyłać dane postem do obecnej strony.

inna forma startu klasy to danie tablicy z danymi:
  1. <?php
  2. $dane=array(
  3. 'action'=>'index.php',
  4. 'method'=>'post',
  5. 'enctype'=>'multipart/form-data',
  6. 'fieldset'=>true,
  7. 'style'=>'border: 1px dotted black'
  8. );
  9. $form=new form($dane);
  10. ?>


do formularza możemy dodać:
legendę:
$form->addLegend('tytuł');

//<label>
$form->addLabel($text,$stylOpcjonalny);

inputy dodajmy przez funkcję addInput(); , dane możemy przesłać na 2 sposoby -> przez tablicę lub standardowe przekazanie parametrów :
//addInput($type,$name=null,$value=null,$style=null,$html=null,$label=null)
//w inpucie jest możliwość wywołania <label> dzięki czemu będzie w przesłanych tagach html
  1. <?php
  2. $in=array(
  3.  'type'=>'text',
  4.  'name'=>'jeden',
  5.  'value'=>'treść',
  6.  'style'=>'id="mojeId"',
  7.  'html'=>array('<p>','</p>'),
  8.  'label'=>array('Imie: ','style="font-size:24px"')
  9. );
  10. $form->addInput($in);
  11. $form->addInput('text', 'jeden','treść');
  12. ?>


dając opcjonalny parametr html dostajemy przez i za inputem tagi html.

textarea:
również parametry możemy przesłać na 2 sposoby.
//addArea($name,$value=null,$style=null,$rows=null,$cols=null,$html=null);
np:
$form->addArea('arenka',null,null,20,40);

select
2 typy przesyłania danych
//addSelect($name,$style=null,$html=null);

opcje dodajemy przez:
//addOption($value,$title,$selected=false)
//też można na 2 sposoby
  1. <?php
  2. $form->addSelect('mine', null, array('<p>','</p>') );
  3. $form->addOption(1,'jeden');
  4. $form->addOption(2,'dwa',true);
  5. $form->addOption(3,'trzy');
  6. ?>


select zamykamy funkcją closeSelect() jednak nie jest to wymagane.

na koniec
aby otrzymać nasz gotowy formularz używamy funkcji getForm(); :
echo $form->getForm();


Jakiś przykładowy form:

  1. <?php
  2. $form=new form('loguj.php','post',true);
  3. $form->addLegend('panel logowania');
  4. $in=array(
  5.  'type'=>'text',
  6.  'name'=>'imie',
  7.  'value'=>$_POST['imie'],
  8.  'html'=>array('<div>','</div>'),
  9.  'label'=>array('Imie: ')
  10. );
  11. $form->addInput($in);
  12. $form->addLabel('hasło:');
  13. $form->addInput('password', 'pass');
  14. $form->addInput('submit', 'submit','wyślij',null,array('<br/>'));
  15. echo $form->getForm();
  16. ?>



To chyba tyle (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
pejott
post
Post #2





Grupa: Zarejestrowani
Postów: 81
Pomógł: 4
Dołączył: 15.02.2009

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


Tak się składa, że tych klas nie jest dwie, tylko więcej. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Odpowiednio dla select, textarea, radio, checkbox i tak dalej.
Kiedyś miałem jedną klasę walidującą dane, ale właśnie ze względu na formularze rozbiłem ją na kilka klas.
Hm, może nie widzisz zalet takiego rozwiązania, ale jak popracujesz trochę na swojej klasie, to i tak dojdziesz do podobnych wniosków.
Dodam, iż nie jest to rozwiązanie stosowane tylko przeze mnie. Tak jest w ZF i z tego co mi się wydaje to w Symfony podobnie.
Oczywiście mówie o klasach walidujących.

Pozdrawiam.
Go to the top of the page
+Quote Post

Posty w temacie


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: 10.10.2025 - 06:31