Ako v nette ublaboo dataGride nastavit id pri edit

Tommy7777
Člen | 13
+
0
-

Zdravím, nedarí sa mi pristúpiť k dátam danej ponuky, ak to chcem editovať. Neviete kde by mohla byt chyba? Do url mi prida iba edit/ , bez id

public $onEdit = [], $onEditGallery = [];

public function createComponentGrid()
    {
        $grid = $this->gridFactory->create();
        $grid->setPrimaryKey('id');
        $grid->setDataSource($this->getDataSource());
        $grid->addColumnText('image', 'Obrázek')
            ->setAlign('center')
            ->setTemplate(__DIR__ . '/templates/offersImage.latte');
        $grid->addColumnText('titulek', 'Název');
        $grid->addColumnText('objekt_typ_nabidky', 'Typ ponuky')->setReplacement($this->offersRepository->typNabitky);
        $grid->addColumnText('objekt_typ', 'Druh')->setReplacement($this->offersRepository->druh);
        $grid->addColumnText('cena', 'Cena s DPH ('.$currencySymbol.')' );
        $grid->addColumnText('aktivni', 'Status')
            ->setAlign('center')
            ->setRenderer(function ($offer) {
                $out = new Html();
                if ($offer->aktivni == 1) {
                    $out->addHtml('<span class="badge badge-success">Aktivní</span>');
                } else {
                    $out->addHtml('<span class="badge badge-primary">Neaktivní</span>');
                }
                return $out;
            });
        $grid->addAction('edit', '', 'Edit', ['id'])
            ->setIcon('edit');
        $grid->addAction('gallery', '', 'Gallery', ['id'])
            ->setIcon('images');

}

public function handleEdit($offer_id)
    {
        $this->onEdit($offer_id);
    }

Editoval Tommy7777 (21. 12. 2021 18:50)

iGavrilo
Člen | 32
+
+1
-

Datagrid si uprav takto:

$grid->addAction('edit', '', 'Edit')->setIcon('edit');

A akciu v presenteri takto:

public function handleEdit($id)
    {
        $this->onEdit($id);
    }

Primárny kľúč ktorý si určil datagridu sa ti do akcie automatický vygeneruje a však tuším že sa názov parametra musí zhodovať. Takto to používam ja a funguje to.

Kolega však používa tento spôsob. Fungujú oba a je na tebe ktorý si vyberieš.

$grid->addAction('hide', 'Active', 'activate!')
			//->setIcon('')
			->setTitle(function($item) {
				return $item->active ? 'Zakázat' : 'Povolit';
			})
			->setRenderer(function($item) {
				return Html::el('a')->class($item->active ? "btn btn-xs btn-danger ajax" : "btn btn-xs btn-success ajax")->setText($item->active ? 'Zakázat' : 'Povolit')->href($this->link("activate!", ["id" => $item->id]));
			})
			->setClass(function($item) {
				return $item->active ? 'btn btn-xs btn-danger ajax' : 'btn btn-xs btn-success ajax';
			});