Advertisement
nanuqcz

Nette dynamic form [better practise]

Mar 3rd, 2012
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.48 KB | None | 0 0
  1.  
  2. <?php
  3. use Nette\Application\UI\Form,
  4.     Nette\Forms\Controls\SubmitButton;
  5.  
  6. /**
  7.  * Homepage presenter.
  8.  *
  9.  * @author     John Doe
  10.  * @package    MyApplication
  11.  */
  12. class HomepagePresenter extends BasePresenter
  13. {
  14.     /** @persistent */
  15.     public $item;  // tady si budeme ukládat item, vybraný v prvním selectu
  16.  
  17.  
  18.     public function renderDefault()
  19.     {
  20.         $this->template->anyVariable = 'any value';
  21.     }
  22.  
  23.  
  24.  
  25.     protected function createComponentTestForm()
  26.     {
  27.         $form = new Form();
  28.         $form->addSelect('item', 'Položka', array(1 => 'Foo', 2 => 'Bar', 3 => 'Baz'));
  29.         $form->addSubmit('send', 'Odeslat')
  30.             ->onClick[] = callback($this, 'addSubitemToForm');
  31.  
  32.         if ($this->item) {  // pokud je vybraný nějaký item, přidáme select se sub-itemy
  33.             $form->addSelect('subitem', 'Pod-položky', array(1 => 'Subfoo', 2 => 'Subbar', 3 => 'Subbaz'));
  34.             $form->addSubmit('delete', 'Smaž')
  35.                 ->onClick[] = callback($this, 'deleteSubitem');
  36.         }
  37.  
  38.         return $form;
  39.     }
  40.  
  41.     public function addSubitemToForm(SubmitButton $button)
  42.     {
  43.         $values = $button->form->values;
  44.        
  45.         $this->item = $values['item'];  // pokud jsme ve formu vybrali nějaký item, uložíme ho do persistentní proměnné (aby se nám po redirectu neztratila)
  46.         $this->redirect('this');
  47.     }
  48.  
  49.     public function deleteSubitem(SubmitButton $button)
  50.     {
  51.         dump("Jsem zde, už stačí jen smazat co potřebuji a redirectnout.");
  52.  
  53.         $this->item = NULL;  // po smazání persistentní proměnnou zresetujeme zpět na NULL
  54.     }
  55.  
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement