Předání user do komponenty (pro plovoucí login box)

Alsatian
Člen | 164
+
0
-

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 | 471
+
+1
-

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;
}
Alsatian
Člen | 164
+
0
-

@MajklNajt … jako jo, asi je zbytečná továrnička. Každopádně jak tam dostanu User?

David Matějka
Moderator | 6445
+
+3
-

továrnička není zbytečná. tím tam právě dostaneš Usera

Alsatian
Člen | 164
+
0
-

@DavidGrudl taky si myslím. Snažím se to dělat pořádně :D Ale zde si nevím rady.

Ondřej Kubíček
Člen | 494
+
0
-

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.

Alsatian
Člen | 164
+
0
-

Děkuji moc všem, použil jsem řešení od Majkla.