Ublaboo status – cizí entita

netteho
Člen | 3
+
0
-
$this->addColumnStatus('orderState', 'Stav')
	->setRenderer(function($item) {
		return $item->getId();
	});

orderState je entita.
State could not be converted to string. Proč?

… a půjde to vůbec nějak naplnit?

$grid->addColumnStatus('orderState', 'Stav')
	->setOptions([1 => 'Zaplaceno', 2 => 'Storno'])

Jak na cizí entity? Trošku se toho bojím.. :-)

Editoval netteho (13. 8. 2019 1:30)

KristianSubweb
Člen | 144
+
0
-

netteho napsal(a):

$this->addColumnStatus('orderState', 'Stav')
	->setRenderer(function($item) {
		return $item->getId();
	});

orderState je entita.
State could not be converted to string. Proč?

… a půjde to vůbec nějak naplnit?

$grid->addColumnStatus('orderState', 'Stav')
	->setOptions([1 => 'Zaplaceno', 2 => 'Storno'])

Jak na cizí entity? Trošku se toho bojím.. :-)

Ahoj ja mi máme podobnú funkcionalitu ale neriešime to cez addColumnStatus ale cez addColumnText

v datagride to vyzerá takto:

$datagrid->addColumnText("payed", "invoice.payed")
			->setAlign("center")
			->setSortable()
			->setTemplate($dir_checkbox, ["presenter" => $presenter]);

Dir je cesta ku .latte kde je upravený ten render.

latte:

{block checkbox}

{if $item->getPayed() == 1}
    <input type='checkbox' class='switchButton payed' data-id='{$item->getId()}' checked='checked'>
{else}
    <input type='checkbox' class='switchButton payed' data-id='{$item->getId()}'><br>
    {var $datediff= $presenter->diffDates(new DateTime(), $item->getDateOfExpiration())}
    {if $datediff->invert == 1}
        <small class="text-danger">Po splatnosti {$datediff->d} dní</small>
    {/if}
{/if}

{/block}

A potom dole tam kde includuješ samotný grid tak už len takto

$(".switchButton").bootstrapSwitch({
        size: "mini",
        inverse: "true",
        onText: "Nie",
        offText: "Áno",
        onColor: "success",
        offColor: "danger",
        onSwitchChange: function(event, state) {

            var invoiceId = $(event.currentTarget).data("id");

            $.nette.ajax({
                url: {link setPayed!},
                data: {
                    invoiceId: invoiceId,
                    value: state
                }
            });
        }
    });

A ako si možeš všimnúť v tom JS je ajax request a voláme tam jednoducho handleSetPayed()

Ak chceš potom si ešte možeš v tej handle funcii zavolať prekreslenie tvojho datagridu.

netteho
Člen | 3
+
0
-

Tohle mi nepomohlo odhledně té cizí entity. Nicméně, alespoň děkuji, že si se snažil mi něco ukázat.

KristianSubweb
Člen | 144
+
0
-

netteho napsal(a):

Tohle mi nepomohlo odhledně té cizí entity. Nicméně, alespoň děkuji, že si se snažil mi něco ukázat.

Nokukal som ale šak cez ten $item->cudziaEntita si ju dotiahneš.

netteho
Člen | 3
+
0
-

Zkoušel jsem například return $item->cudziaEntita->id a stále stejný problém.

KristianSubweb
Člen | 144
+
0
-

netteho napsal(a):

Zkoušel jsem například return $item->cudziaEntita->id a stále stejný problém.

A používaš Doctrinu a ak áno máš tie tabulky prepojené. Alebo prečo dávaš render najprv si sprav dump() a uvidíš ak ti to vráti entitu a tá bude previazaná s inou tabulkov tak to v tom dumpe pekne uvidíš.

Vpohode sem šupni ten dump($item) nech vidíme ake dáta tam máš.