neodesila se mi checkbox ..prosim pomoc !
- azicko
- Člen | 7
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
co je v categoriesArray a kde to plnis? musis do naplnit nejdyl v action* metode..
- azicko
- Člen | 7
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
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
- azicko
- Člen | 7
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 :)