neodesila se mi checkbox ..prosim pomoc !

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
azicko
Člen | 7
+
0
-

Ahoj,

prosim radu .. mam nasledujuci form a jeho submitmetodu

  protected function createComponentSubmitArticle() {
        $categories = $this->categoriesArray;
//        Nette\Diagnostics\Debugger::dump($categories);
//        Nette\Diagnostics\Debugger::dump(count($categories));
        $form = new Form();
        $form->addText('subject', 'Nadpis');
        $form->addTextArea('text')->setHtmlId("submitArticle");
        for ($index = 0; $index < count($categories); $index++) {

            $form->addCheckbox($categories[$index], $categories[$index]);
        }
        $form->addSubmit('send', 'Odoslat');
        $form->onSuccess[] = callback($this, 'submitArticleSubmitted');
        Nette\Diagnostics\Debugger::barDump($form);
        return $form;
    }


     public function submitArticleSubmitted(Form $form) {
        $data = $form->getValues();
        Nette\Diagnostics\Debugger::dump($data);

        $data['written'] = new DateTime();
        $data['user_id'] = $this->getUser()->getId();
        $row = $this->articleRepository->insertArticle($data);

        $this->flashMessage('Article ulozen');
    //        $this->redirect('this');
    }

nechapem a nejde mi do hlavy ze ked zdebugujem FORM ..tak v objekte je pekne zahrnute vsetko vcetne checkboxov ..avsak ked chcem vidiet debug DATA ..vobec tam niesu checboxy a prenesie sa iba textarea a text input

debuger $categories pise toto

array(3) [
0 ⇒ „Pocitace“ (8)
1 ⇒ „Skola“ (5)
2 ⇒ „Technika“ (8)
]

Editoval azicko (1. 1. 2014 16:04)

David Matějka
Moderator | 6445
+
0
-

co je v categoriesArray a kde to plnis? musis do naplnit nejdyl v action* metode..

azicko
Člen | 7
+
0
-

matej21 napsal(a):

co je v categoriesArray a kde to plnis? musis do naplnit nejdyl v action* metode..

mno ..categoriesArray vytvorim tak ze do kazdeho prvku pola priradim meno danej kategorie, kategorie ziskavam postupnym prechadzanim objektu Table\Selection a ulozim len ako pole (aby to bol String) ..

tady metoda

private function selectionToArray(Nette\Database\Table\Selection $categories){

        $categoriesArray = array();
        $index = 0;
        foreach ($categories as $row) {
            $categoriesArray[$index] = $row->name;
            $index++;
        }
//        Nette\Diagnostics\Debugger::barDump($categoriesArray);
        return $categoriesArray;
    }

public function renderNew() {

        $this->initNew();
        $this->template->userID = $this->userID;
        $this->template->isLoggedIn = $this->isLoggedIn;
        $this->template->categories = $this->categories;
    }

    private function initNew(){
        $this->userID = $this->getUser()->getId();     // userID
        $this->isLoggedIn = $this->getUser()->isLoggedIn();  // isLoggedIN
        $this->categories = $this->categoryRepository->getCategories();
        $this->categoriesArray = $this->selectionToArray($this->categories);

    }

takze tak

Editoval azicko (1. 1. 2014 18:00)

David Matějka
Moderator | 6445
+
0
-

jak rikam, musis to naplnit nejdyl v action* metode, render* metoda se vola az po zpracovani formulare..

takze si vytvor metodu actionNew, kde zavolas initNew

Šaman
Člen | 2666
+
0
-

Připadalo by mi lepší volat getCategories(), která vrátí pole kategorií a neukládat si toto pole jako členskou proměnnou.

A propo formátování PHP kódu uděláš takto:
<?php
#nějaký kód
?>

<?php
#nějaký kód
?>
azicko
Člen | 7
+
0
-

matej21 napsal(a):

jak rikam, musis to naplnit nejdyl v action* metode, render* metoda se vola az po zpracovani formulare..

takze si vytvor metodu actionNew, kde zavolas initNew

waaaav, dakujem ti velmi pekne :) doplneno :

public function actionNew() {
        $this->initNew();
    }

a funguje …je to sposobene aj tym ze s nette zacinam ..a ucim sa za pochodu ..nemam rad citanie dokumentaci …

Diky este raz :)