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.