Persistent parametry a komponenty

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 presenter a komponentu a za boha nemůžu dostat persistentní parametry do té komponenty.

Presenter

<?php
class DocumentsPresenter extends BasePresenter {

    /** @var IDocumentCommentsFormFactory @inject */
    public $documentCommentsFormFactory;

    /** @persistent */
    public $order_field = 'created_at';

    /** @persistent */
    public $order = 'ASC';

...
    public function createComponentNewDirectives() {
        return new \NewDirectivesList($this->documentModel,
 $this->fileFeeder, self::COMPONENT_FULL_SIZE);
    }

?>

Pokud si v createComponent vydumpuju oba parametry, tak jsou správně.

Komponenta:

<?php
class NewCircularLettersList extends ListFactory {
	public function __construct(\App\Model\Documents $documents, \App\Model\FileFeeder $fileFeeder, $size = NULL) {
	     parent::__construct();
?>

Pokud si vydumpuju tyto parametry zde v konstruktoru, tak již jsou buď:

  • NULL, pokud jen vytvořím proměnné, případně onanotuji jako persistent
  • mají vlastnost toho persistentního parametru, pokud mu v komponente přiřadím def. hodnotu
  • error, pokud je v komponentě vůbec nevytvořím

Není nějaký jednoduchý způsob, jak je tam dostat?

Díky moc za pomoc.

PS: Zkoušel jsem i persistentní komponentu anotovat, ale to mi nepomohlo, nebo jsem to dělal špatně…

Šaman
Člen | 2666
+
0
-

Persistentní znamená, že se přenáší mezi requesty, ale nikoliv, že budou viditelné odevšaď. Persistence ti je předá do presenteru a dál s nimi pracuj, jako s libovonou jinou proměnnou. Předej je té komponentě ideálně v továrničče jako další parametry.

David Kudera
Člen | 455
+
+1
-

S tím že i komponenty samotné mohou mít své vlastní persistentní parametry