addHidden() a moznost rozsirenia o „completely hidden“ (aka value only) vo formularoch

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

Uvodom – s Nette iba zacinam, takze sa moze ukazat ze sa to riesi inak (nette-way)… ale nenasiel som to.

Ide o to, ze pri pouziti formulara na add aj edit funkcie je nutne mat ID zaznamu z DB v nejakej polozke formulara. Pri add moze byt NULL a pri edit bude mat hodnotu podla DB.
Jedina moznost ktoru som nasiel je mat toto id ulozene ako HiddenField ($form->addHidden()). HiddenField ma private $forcedValue co zaruci ze sa nezmeni u uzivatela, toho sa ale vyuziva iba vo frameworku samotnom (na zabezpecenie) a premenna $forcedValue nie je pristupna cez ziadny public interface.

Prave tejto funkcie by som rad vyuzil.

Este lepsie by bolo mat nieco na styl $form->addValueField($name, $value), s tym, ze tento element by sa nerendroval a teda ani neposielal klientovi, bol by ale pristupny vo validacii a submit handleri. Tento pristup sa pouziva napr. v drupale a IMHO to je dost prakticke, moze to obsahovat objekt alebo cokolvek ine co sa pri spracovani moze hodit.

PS: samozrejme podedit a priohnut si formular a dorobit tieto veci viem, ale myslim ze by sa to hodilo v Nette.

David Matějka
Moderator | 6445
+
0
-
  1. proc prenaset ID ve formu? proc ne podle URL?
  2. forcedValue by mozna slo pouzit nejak takhle:
<?php
$form = new Form;
$hidden = new Controls\HiddenField("nejaka_hodnota");
$form['blabla'] = $hidden;
?>
Tomáš Votruba
Moderator | 1114
+
0
-

Přesně na to je recept Jak předávat id při editaci záznamu

Filip Procházka
Moderator | 4668
+
0
-

To je ale otřesně špatné řešení. Použij persistentní parametry.