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
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');
}
}
?>
- salazzar
- Člen | 18
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