Problém s DI, nepředává parametr
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- greeny
- Člen | 405
Zdravím, mám UserPresenter.php v tomto tvaru:
<?php
/** @var Users */
protected $userList;
/** @var Contacts */
protected $contactList;
public function injectUsers(Users $u)
{
$this->userList = $u;
}
public function injectContacts(Contacts $c)
{
$this->contactList = $c;
}
...
public function renderList()
{
$this->template->users = array();
$usercount=0;
$ul = $this->userList;
foreach($ul->findAll() as $user)
{
$this->template->users[] = $user;
$usercount++;
}
$this->template->usercount = $usercount;
}
?>
Tento kód mi vyhodí Recoverable Error – Argument 2 passed to Database\Selection::__construct() must implement interface Database\IModelManager, null given, called in …/Fabik/Database/Table.php (používám databázovou vrstvu Fabik\Database)
Přitom ve stejném presenteru je o kus níž
<?php
public function registerFormSubmitted($form)
{
$v = $form->getValues();
$id = $this->contactList->addContact($v);
$this->userList->addUser($v->password, $id);
$this->flashMessage('Registrace proběhla úspěšně.', 'success');
$this->redirect('User:login');
}
?>
A tady mám k oboum injectovaným třídám 100% přístup… Vůbec to nechápu, nevíte čím to je?
Editoval greeny (20. 10. 2012 3:57)
- Filip Procházka
- Moderator | 4668
Presenter je v pořádku, špatně to konfiguruješ. Ukaž co máš
v sekcích services
a v nette
v neonu?