Předání user do komponenty (pro plovoucí login box)
- Alsatian
- Člen | 175
Ahoj. Dle postupu na stránce https://doc.nette.org/…s/form-reuse se snažím přidat do komponenty User, pro přihlášení uživatele pomocí $user->login($values->username, $values->password);
Base presenter
public function createComponentFloatLoginForm()
{
$control = new \App\Components\FloatLoginForm();
$control->setTemplateFile(__DIR__ . '/../components/FloatLoginForm.latte');
return $control;
}
FloatLoginForm.php
private $user;
public function __construct(\Nette\Security\User $user)
{
parent::__construct();
$this->user = $user;
}
public function render()
{
...
}
...
interface IFloatLoginFormFactory
{
/** @return FloatLoginForm */
function create();
}
Vykresleno v latte pomocí
{control floatLoginForm}
Chyba:
ArgumentCountError
Too few arguments to function App\Components\FloatLoginForm::__construct(), 0 passed in D:\wamp64\www\Alsan.cz\_2019\navigace24.eu(nette_eshop)\app\presenters\BasePresenter.php on line 520 and exactly 1 expected search►
- MajklNajt
- Člen | 502
načo si vytváraš továrničku, keď ju nepoužiješ? do presenteru si nainjectuj továrničku a potom vytvor komponentu pomocu nej:
/** @var IFloatLoginFormFactory @inject */
public $floatLoginFormFactory;
public function createComponentFloatLoginForm()
{
$control = $this->floatLoginFormFactory->create();
return $control;
}
- Ondřej Kubíček
- Člen | 494
s čím si ted nevíš rady? majkl ti napsal jak to máš udělat. Ta
továrnička se o všechno postará sama.
Tím že sis tu třídu FloatLoginForm
instancoval sám, musel by
sis tam i sám předat ty závislosti do konstruktoru, a ty sis tam nic
nepředával, proto ti to hodilo chybu. Ale to už jsou základy OOP.