problém s šablonou a ublaboo/datagrid

uživatel5869
Člen | 3
+
0
-

Dobrý den, mám problém s rozšířením DataGrid, kdy po kliknutí na tlačítko change, kdy mám definovanou funkci change, dojde k otevření nového okna, ale mám problém se zobrazováním šablony, kdy do šablony nemohu posílat proměnné a šablona se zobrazuje úplně jinak než by měla. Zobrazuje se jiný text, než je v šabloně. Zkoušel jsem promazat cache, ale nepomohlo. Předem děkuji za odpovědi.
Presenter:
protected function createComponentDataGrid(): \Ublaboo\DataGrid\DataGrid
{
//grid je definován
$grid->addAction(‚change‘, ‚Upravit‘)
->setIcon(‚pencil‘);

DataGrid::setActions($grid, false);

return $grid;
}
public function change() {
$this->template->pageTitle = „Ahoj“;
}
Šablona (change.latte):
{extends '@layout.latte'}

{block content}
<h2>{$pageTitle}</h2>
{/block}

Editoval uživatel5869 (20. 7. 7:56)

nightfish
Člen | 509
+
0
-

@uživatel5869 Možná zkus popsat svůj problém trochu podrobněji. Píšeš kdy do šablony nemohu posílat proměnné a šablona se zobrazuje úplně jinak než by měla, což je bez nějakých podrobností jen nicneříkající vata.
Jak posíláš proměnné do šablony? V jaký okamžik? Jak se zobrazuje? Jak by se měla zobrazovat? Jak vypadá kód, který obsluhu řeší?

uživatel5869
Člen | 3
+
0
-

nightfish napsal(a):

@uživatel5869 Možná zkus popsat svůj problém trochu podrobněji. Píšeš kdy do šablony nemohu posílat proměnné a šablona se zobrazuje úplně jinak než by měla, což je bez nějakých podrobností jen nicneříkající vata.
Jak posíláš proměnné do šablony? V jaký okamžik? Jak se zobrazuje? Jak by se měla zobrazovat? Jak vypadá kód, který obsluhu řeší?

Už jsem přidal doplňující informace.

nightfish
Člen | 509
+
0
-

@uživatel5869
Pokud jsem správně pochopil z dokumentace, tak $grid->addAction('change', 'Upravit') vytvoří odkaz na akci change, tzn. metoda, která bude nastavovat věci v šabloně, musí být pojmenovaná actionChange. Alternativně je možno použít signál ($grid->addAction('change', 'Upravit', 'change!')), který se pak obslouží metodou handleChange().

Při pohledu na kód, který jsi doplnil do prvního příspěvku, by mi připadlo, že se tvá metoda change() z presenteru vůbec nezavolá (což můžeš ověřit třeba bdumpem nebo přes Xdebug).

uživatel5869
Člen | 3
+
0
-

Děkuji za odpověď, vyřešilo to můj problém a chtěl jsem se ještě zeptat, v DataGridu po přidání možnosti editace buňky aplikace spadne. Nenapadá vás, čím to může být?
protected function createComponentOrderItemsGrid(): \Ublaboo\DataGrid\DataGrid
{
$grid = new \Ublaboo\DataGrid\DataGrid($this, ‚orderItemsGrid‘);

if (!$this->template->order) {
throw new \Nette\Application\BadRequestException(„Není možné získat“);
 }

$order = $this->template->order;
$items = $order->getItems();

if (!$items) {
throw new \Nette\Application\BadRequestException(„Položky nejsou“);
}
$grid->setDataSource($items);

$grid->addColumnText(‚id‘, ‚ID‘)
->setSortable()
->setFilterText();

$grid->addColumnText(‚pocet‘, ‚Počet‘)
->setEditableCallback([$this, ‚columnNameEdited‘]);

$grid->onUpdate[] = [$this, ‚handleGridUpdate‘];

DataGrid::setActions($grid, false);
DataGrid::highLightEdited($grid, $this->request->getQuery(‚editedId‘, 0));

return $grid;
}

nightfish
Člen | 509
+
+1
-

@uživatel5869

  1. Označuj prosím své bloky kódu pomocí patřičných značek (nápověda). Zaprvé se zachová původní formátování, za druhé dojde ke zvýraznění syntaxe.
  2. Píšeš, že aplikace spadne. Většinou když aplikace spadne, tak k tomu existuje nějaký text chyby, od kterého se dá odrazit. Při psaní na fórum se pak hodí ten text chyby zmínit, protože většinou výrazně usnadňuje nalezení příčiny.

Editoval nightfish (20. 7. 15:51)