Autowire IContainer $parent formulaře

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

Mám komponentu(HtmlBox01) obsahující formulař(UI\Form Login) chtěl jsem mít na obje komponenty generovanou tovarničku, ale na Login formulář potřebuju získat IContainer $parent bez něj se form nespracuje.
Znáte způsob jak si zachovat továrničku a zároveň Attachnout LoginForm ?

confing.neon
services:
- IHtmlBox01Factory
- ILoginFactory

<?php
interface IHtmlBox01Factory {
	/** @return \FrontModule\components\HtmlBox01 */
	function create();
}
interface ILoginFactory {
	/** @return \forms\Login */
	function create();
}

/**
 * @property-read \Nette\Security\User $user
 * @property-read \forms\Login $loginForm
 */
class HtmlBox01 extends Control {
  private $user;
  private $loginForm;

  function __construct(\Nette\Security\User $user, \ILoginFactory $loginForm) {
    parent::__construct();
    $this->user = $user;
    $this->loginForm = $loginForm;
  }

  function createComponentLogin() {
    return $this->loginForm->create();
  }

}
/**
 * Prihlasi uzivatele
 * @property-read \Nette\Security\User $user
 */
class Login extends Form {
  private $user;

  function __construct(\Nette\ComponentModel\IContainer $parent, \Nette\Security\User $user) {
    parent::__construct($parent,'login');
  }
}
?>
Jan Endel
Člen | 1016
+
0
-

$parent je v konstruktoru formuláře nepovinný, dokonce se doporučuje ho neuvádět

salazzar
Člen | 18
+
0
-

Jan Endel napsal(a):

$parent je v konstruktoru formuláře nepovinný, dokonce se doporučuje ho neuvádět

to je Ale tento můj form v komponente se zpracuje jen kdyz ma rodice bez nej je action="" prazdna a
callback se nevykona

<?php
$this->onSuccess[] = array($this, 'submitted');
?>

Zkousel jsem ruzne zapisi ale zadny se nevykonal

Jan Endel
Člen | 1016
+
0
-

Tak to voláš nák hodně obskurně protože se ti nezavolá attached metoda na formuláři. Nepřetížil sis jí?