Datagrid – Non-existing column
- Ondřej Kubíček
- Člen | 494
zdravím,
mám problém s datagridem, najednou mi začal hlásit Non-existing column,
ikdyž tam ten sloupeček je. Problém je jenom se sloupečkem
„privilege“
public function getRules() {
return dibi::dataSource('SELECT
a.id,
ro.id as rid,
a.allowed as allowed,
ro.name as role,
re.name as resource,
p.name as privilege
FROM [' . self::ACL_TABLE . '] a
JOIN [' . self::ROLES_TABLE . '] ro ON (a.role_id = ro.id)
LEFT JOIN [' . self::RESOURCES_TABLE . '] re ON (a.resource_id = re.id)
LEFT JOIN [' . self::PRIVILEGES_TABLE . '] p ON (a.privilege_id = p.id)
');
}
v presenteru:
...
$dataSource = $data->getRules();
$grid->bindDataTable($dataSource);
$grid->addColumn('privilege', 'Akce');
$grid->addColumn('role', 'Role');
$grid->addColumn('resource', 'Zdroj');
...
když ten řádek s column privilege zakomentuju, vše funguje, nechapu
prošel jsem to asi milionkrát a chybu nevidím…
používám Nette Framework 1.0-dev (revision e6eaa61 released on
2010–05–01), PHP 5.3.2 ale v tom snad problem není
díky za jakoukoli odpověď
- Mira Nyklicek
- Člen | 2
Měl jsem stejný problém, konkrétně se tahle chyba projevovala
u sloupců, který byly NULL.
Existenci sloupce v datasourcu datagrid testuje pomocí funkce isset(), která
na hodnotě NULL vrací FALSE.
Řešením tedy je nahradit na řádku 556 v DataGridRenderer.php
!isset($data[$column->getName()])
za
!array_key_exists($column->getName(), $data)
- Honza Kuchař
- Člen | 1662
Pište prosím vše co se týká data gridu do vlákna s datagridem. Nikoli do sekce pro hlášení chyb v Nette.