Nelze najít třídu komponenty (Component with name ‚XYZ‘ does not exist.)
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- PajaS
- Člen | 13
Zdravím.
Zkouším trochu proniknout do psaní komponent a i když jsem pročítal
fórum i koukal na videonávod Honzy Tvrdíka, stále se mi nedaří správně
zobrazit výstup komponenty… Její třídu (Expenses
) mám
uloženou v app/components
…
Expenses.php
use Nette\Application\UI\Control;
class Expenses extends Control
{
public function __construct()
{
}
public function render()
{
echo 'Hello world';
}
}
Dále pro ni mám továrničku v HomepagePresenter.php:
namespace Flat;
use Nette;
use Model;
class HomepagePresenter extends BasePresenter
{
public function renderDefault()
{
$control = $this->getComponent('Expenses');
}
protected function createComponentExpenses()
{
$control = new Expenses();
return $control;
}
}
A konečně, v šabloně se jí pokouším vykreslit pomocí
{control Expenses}
. Pokud se však pokusím stránku zobrazit,
vyhodí mi to:
Nette\InvalidArgumentException
Component with name 'Expenses' does not exist.
K chybě dochází na řádku
$control = $this->getComponent('Expenses');
. Tuším, že jen
někde něco zapomínám, ale nemohu přijít na to co. Děkuji všem
za rady.
Editoval PajaS (5. 2. 2014 8:36)
- Etch
- Člen | 403
Celou metodu renderDefault
smaž. Není potřeba.
namespace Flat;
use Nette;
use Model;
class HomepagePresenter extends BasePresenter
{
protected function createComponentExpenses()
{
$control = new Expenses();
return $control;
}
}
a v šabloně musíš mít
{control expenses} /** Počáteční písmeno musí být malé. */
Editoval Etch (5. 2. 2014 8:41)