Připojení komponenty k rodiči

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
majkl324
Člen | 13
+
0
-

Ahoj,

snažím se poslední dobu udělat komponentu, která by se správně připojila k rodiči, respektive k presenteru. Všechno jsem dělal podle https://doc.nette.org/…s/form-reuse, ale nedaří se mi to.

Pořád dostávám buď error Component '' is not attached to ‚Nette\Application\UI\Presenter‘, když v komponentě nechám prázdný constructor, který volá parenta, nebo Service ‚83_App_Grids_Products_ProductTypes_IProductTypeFactory‘: Multiple services of type Nette\ComponentModel\IContainer found: newrelic.rum.headerControl, newrelic.rum.footerControl bez constructoru.

Přikládám jak vypadá interface a komponenta

<?php
namespace App\Grids\Products\ProductTypes;

interface IProductTypeFactory
{
    /**
     * @return ProductType
     */
    public function create();

class ProductType extends UI\Control
{
    /** @var  User */
    protected $userEntity;

    public function setUserEntity(User $userEntity)
    {
		...
    }

    /**
     * @return Grid
     */
    public function create()
    {
        ...
    }

    /**
     * @param   int $id
     * @throws  BadRequestException
     */
    public function handleDelete($id)
    {
        ...
    }
}
?>

A tady registruji interface mezi služby v configu

<?php
services:
	- App\Grids\Products\ProductTypes\IProductTypeFactory
?>

A v presenteru se snažím načíst

<?php
	/** @var IProductTypeFactory @inject */
	public $grid;

    /**
     * @return Grid
     */
    public function createComponentProductTypesGrid()
    {
        $grid = $this->grid->create();
        $grid->setUserEntity($this->userEntity);
        return $grid->create();
    }
?>

Díky za pomoc, hádám, že to bude nějaká úplná blbost, dříve si pamatuji, že se mi to rozchodit povedlo, ale teď vážně nevím jak dál, díky.

CZechBoY
Člen | 3608
+
0
-

Na co mas tu metodu create v komponente? Co v ni delas?

majkl324
Člen | 13
+
0
-

Ahoj, mám v ní udělaný grid (o5/grido). Každopádně se mi to povedlo rozchodit, když se na to dívám jak jsem to psal tady, tak je pořád vše stejné, jen jsem použil samostatnou šablonu pro vykreslení kompoennty. Byl to asi problém, který jsem si neuvědomil, snažil jsme se dostat komponentu (grid) této komponenty, což mi přijde jako docela divný způsob :)
Když jsem grid vykreslil ve vlastní šabloně této komponenty a pak už vykreslil jen samotnou komponentu, všechno funguje jak má.