Nefunkční komponenta Datagrid
- BuMoRi
- Člen | 109
Ahoj, jsem v Nette začátečník a mj. se učím i z hotových kódů.
Teď zkouším Datagrid a ty dva jednoduché příklady na první straně.
První s využitím presenteru je v pohodě, ale u druhého komponenta
neexistuje: „Component with name ‚simpleGrid‘ does not exist“.
Kod mám stejný jako v dokumentaci, jen v souboru FooControl.php
nepoužívám Dibi:
<?php
namespace App\Components;
use Ublaboo\DataGrid\DataGrid;
use Nette;
class FooControl extends \Nette\Application\UI\Control
{
public $database;
public function __construct(Nette\Database\Context $database)
{
$this->database = $database;
}
public function render()
{
$this->template->render(__DIR__ . '/foo_control.latte');
}
public function createComponentSimpleGrid($name)
{
$grid = new DataGrid($this, $name);
$grid->setDataSource($this->database->table('db_kategorie'));
$grid->addColumnText('nazev', 'Název');
$grid->addColumnText('popis', 'Popis');
}
}
?>
Byl bych vděčný i za radu, jakým způsobem chybu hledat. Díky.
- BuMoRi
- Člen | 109
Presenter a továrničku mám zkopírovanou z dokumentace.
<?php
namespace App\AdminModule\Presenters;
class SimplePresenter extends BasePresenter
{
public $fooControlFactory;
public function createComponentFooControl()
{
echo 'aaa';exit;
return $this->fooControlFactory->create();
}
}
?>
<?php
namespace App\Components;
interface IFooControlFactory
{
/**
* @return FooControl
*/
function create();
}
?>
- David Matějka
- Moderator | 6445
a z jake sablony volas to {control simpleGrid}
? musis to volat
z sablony te foo komponenty, ne z presenteru
- David Matějka
- Moderator | 6445
v presenteru mas mit {control fooControl}
.
ty totiz ten grid nemas definovany primo v presenteru, ale v subkomponente a
odtud take musi byt vykreslen (respektive mohl bys i v presenteru pouzit
{control fooControl-simpleGrid}
.
a potrebujes vubec tu fooControl? nestacilo by ti ten grid definovat v presenteru?