Jak správně používat formulář v cyklu?
- Allconius
- Člen | 317
Ahoj, dá se nějak předávat parametr do formu , který si sám vykresluji
přes {form} ?
Mám to takto:
{foreach $posts as $post}
//$post->parametr = "123456";
{form editForm, $post->parametr}
....................
....................
<input type="hidden" name="parametr" value="$post->parametr">
{/form}
{/foreach}
protože je form v cyklu tak tam potřebuji dostat ideálně <input type=„hidden“ name=„parametr“ value=„$post->parametr“>. Když ten hidden přidám do šablony tak ho form ignoruje a je tedy potřeba ho nějak předat do Presenteru, ale ten zápis {form editForm, $post->parametr} ten parametr jen přidá do html tagu <form>:
<form action="/kontakty/" method="post" class="form-horizontal" id="frm-editForm" 0="123456">
- Marek Bartoš
- Nette Blogger | 1280
Tak si input i s hodnotou přidej při vytváření instance formuláře, ne při renderu.
- Pepino
- Člen | 257
Jestli přidáváš do formu políčko tak jak přidáváš tak můžeš pro
získání dat použít místo getValues
getHttpData
.
Další možnost by mohl být https://doc.nette.org/…n/multiplier
- m.brecher
- Generous Backer | 873
@Alconius
Ahoj, a jak tu hodnotu toho parametru dostanu do presenteru ? To je právě to co nevím.
Z kódu který Jsi poslal není jasné, jak získáváš $posts, kde je $post->parametr, ani jak vlastně formulář vytváříš. Do šablony injektuješ $posts z presenteru, třeba takhle?
public function actionPost(...){
....
$this->template->posts = $this->postRepository->getAll();
}
Pokud vytváříš formulář v presenteru pomocí metody createComponentPostForm() tak tam přesuň $this->postRepository->getAll() přes privátní pole presenteru třeba takhle:
class PostPresenter extends BasePresenter
{
private array $posts;
.....
public function actionPost(...){
....
$this->template->posts = $this->posts = $this->postRepository->getAll();
}
}
public function createComponentPostForm(): Form
{
$form = new Form;
.....
foreach($this->posts as $post){
$form->addHidden(...., $post->parameter);
}
}
Kód píšu z hlavy a je potřeba ho upravit, princip je jednoduchý – když ve formuláři něco potřebuješ tak si to tam předáš. Pokud vytváříš formulář pomocí factory tak si předej $posts z presenteru do factory a z ní do formuláře.
- Allconius
- Člen | 317
Pepino napsal(a):
Jestli přidáváš do formu políčko tak jak přidáváš tak můžeš pro získání dat použít místo
getValues
getHttpData
.Další možnost by mohl být https://doc.nette.org/…n/multiplier
Ahoj, díky, ten multiplier je to co potřebuji :-)