Problém DI (@inject) – Undefined variable
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- sd
- Člen | 87
Zdravím,
mám tady problém se kterým si nevým rady :/…
Třídu Stock vkládám do OrdersPresenteru takto:
/**
* @var App\Stock
* @inject
*/
private $stock;
Poté ji chci použít ve formuláři, aby se hodnota z DB nastavila jako defaultní hodnota u textarea:
protected function createComponentNoteForm()
{
$form = new Nette\Application\UI\Form;
$form->addTextArea('note', '')
->setDefaultvalue($stock->getNote($orderId));
$form->addSubmit('send', 'Save')
->setAttribute('class', 'form_submit_button');
$form->onSuccess[] = $this->registerFormSucceeded;
return $form;
}
Vypisuje chybu: Undefined variable: stock
//Vždyť jsem ji definoval snad hned za DI nebo ne? (private $stock;)
Zkoušel jsem i $stock = new /App/Stock;
, ale ani to nepomohlo
:/.
Neví někdo, co s tím?
Děkuji, sd
- David Kudera
- Člen | 455
pokud chceš takhle injectovat, tak ta proměnná musí být public. Druhá možnost je použít inject metody a nebo úplně nejlíp konstruktor. Pak to může být i private
Editoval David Kudera (9. 9. 2014 11:36)
- Michal Vyšinský
- Člen | 608
Měl bys volat $this->stock
a ne jen $stock
.
S DI to víceméně nemá nic společného.
Editoval Michal Vyšinský (9. 9. 2014 11:53)