problém s šablonou a ublaboo/datagrid
- uživatel5869
- Člen | 5
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 | 516
@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 | 5
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 | 516
@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 | 5
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 | 516
@uživatel5869
- 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.
- 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)