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%)
-----


Aktualnie nie mam dostępu do plików, ale są tam 3 metody, a nawet jeśli miałoby być samo __construct() to nie wiem w czym problem ?
Każdy ma swoje podejście, moje rozwiązanie wydaje się wygodne bo do wyświetlenia formularza kontaktowego wystarczy taka akcja.
Pisane z palca.

  1. <?php
  2. class displayContactForm extends dfAction {
  3.  
  4.    public function Execute() {
  5.  
  6.       $objView = new dfView('XHTML');
  7.  
  8.        $objView->setLayout('defaultLayout', 'Core');
  9.  
  10.        $objForm = $this->getForm('contactForm');
  11.  
  12.        $objView->setTemplate('Content', 'displayContactForm');
  13.  
  14.        $objView->setData('contactForm', $objForm);
  15.  
  16.        $objView->Render();
  17.  
  18.    }
  19.  
  20. }
  21. ?>


A walidacja tego formularza i wysłanie wiadomości, ogranicza się do tego.

  1. <?php
  2. class execContactForm extends dfAction {
  3.  
  4.     public function Execute() {
  5.  
  6.        $objForm = $this->getForm('contactForm');
  7.  
  8.        if($objForm->isValid()) {
  9.  
  10.        $objMsg = $this->getModel('Msg');
  11.  
  12.        $objMsg->addMsg($objForm->getData('msgTopic'), ...);
  13.  
  14.        $this->Forward(...);
  15.  
  16.        } else { $this->Forward(...); }
  17.  
  18.     }
  19.  
  20. }
  21. ?>

Pozdrawiam.

Ten post edytował pejott 15.05.2009, 15:54:45
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: 5.10.2025 - 16:10