Jak si předávat parametry ve formuláři

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

Ahoj,

mám formulář, generovanou továrničku a v presenteru si vytvářím klasicky createComponent.

Mám dotaz, jak si správně předávat parametry do toho formuláře.

Příklad:
Mám formulář na komentář

<?php
    /** @persistent */
    private $documentId;

    public function __construct($documentId, ..) {
        parent::__construct();
        $this->documentsModel = $documentsModel;
        $this->documentId = $documentId;

    }

    public function succeed($form) {
      var_dump($this->documentId);
    }
?>

Chci se zeptat, jak si správně předávat toto $documentId?
Možnosti, které mi napadají:

  1. dávat to do hidden inputu formu a pak to načítat z values
  2. pomocí persistent parameteru

Ad 2) jsem narazil na problém
Presenter

<?php
    public function createComponentDocumentCommentsForm() {
	$id1 = $this->id;
	$id2 = $this->getParameter('id');
        $control = $this->documentCommentsFormFactory->create(...);

        return $control;
    }
?>

pokud použiju $id1, tak ho mám k dispozici pouze při vytvoření formuláře, při odeslání už mám NULL
s $id2 to funguje.

Abych to shrnul:

  1. Jak správně předávat takovéto parametery. (nejlépe i proč) :)
  2. Je to schválně, že to funguje pouze s $this->getParameter(‚id‘) (a proč?)

Díky za odpovědi.

ViPEr*CZ*
Člen | 818
+
0
-

Persistentní parametr musí být public! Viz: https://doc.nette.org/…n/components#…
Možnost použít hidden value ve formuláři je asi také možnost, ale pokud nemusím, tak naproti persistent parametru je s tím více práce.

tttpapi
Člen | 100
+
0
-

Díky za radu, ale funguje mi to i s private property.

ViPEr*CZ*
Člen | 818
+
0
-

tttpapi napsal(a):

Díky za radu, ale funguje mi to i s private property.

Noo pokud jsem pochopil, tak po submitu už ne… což by mělo public spravit. Navíc nebude nutné si ten parametr předávat přes konstruktor, ale nette se o to postará samo.