Chyba při addButton – NiftyGrid

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
caslavak
Člen | 7
+
0
-

Zdravím,
snažím se vypsat obsah tabulky z databaze (data) přes NiftyGrid.
Vše mi funguje, ale jakmile použiji např. $this->addButton(Grid::ROW_FORM, „Rychlá editace“) ->setClass(„fast-edit“); tak mi to vyhodí chybu PDOException – No reference found for $data->. na řádku 101 v souboru „…\www\temp\cache\_Nette.FileTemplate\_templates.grid.latte-bf633a0a41c577f70ee87961f5c7c427.php“
Cache jsem mazat zkoušel.

Výpis Laděnky:

 91:    <?php if ($control->isEditable() && $column->editable && $control->activeRowForm == $row[$primaryKey]): ?>
 92:                        <?php echo Nette\Templating\Helpers::escapeHtml($control['gridForm'][$control->name]['rowForm'][$column->name]->getControl(), ENT_NOQUOTES) ?>
 93:
 94:    <?php else: ?>
 95:                        <?php echo Nette\Templating\Helpers::escapeHtml($column->prepareValue($row), ENT_NOQUOTES) ?>
 96:
 97:    <?php endif ?>
 98:                </td>
 99:    <?php $iterations++; endforeach ;if ($control->hasButtons() || $control->hasFilterForm()): ?>
100:                <td<?php echo Nette\Utils\Html::el(NULL, array('class' => array('grid-row-cell', $control->isEditable() && $control->activeRowForm == $row[$primaryKey] ? 'grid-edited-cell':null)))->attributes() ?>>
101:    <?php if ($control->activeRowForm == $row[$primaryKey] && $control->isEditable()): ?>
102:                        <?php echo Nette\Templating\Helpers::escapeHtml($control['gridForm'][$control->name]['rowForm']['send']->getControl(), ENT_NOQUOTES) ?>
103:
104:                        <a class="grid-rowForm-cancel grid-ajax" title="Zrušit editaci" href="<?php echo htmlSpecialChars($_control->link("this")) ?>
105:    "></a>

Za jakékoliv rady díky :)

caslavak
Člen | 7
+
0
-

Zkoušel jsem jinou databázi a tabulku – funguje.
Vybral jsem tedy znovu původní a vymazal všechny sloupce až na PK, ale opět stejná chyba.

Editoval caslavak (17. 12. 2012 20:10)

MW
Člen | 626
+
0
-

Posli jak nastavujes grid + struktutu tabulky.
Podle me tam nebude dany sloupec..

caslavak
Člen | 7
+
0
-

Tabulku přidávám z modelu v MySQL přes Forward Engineer:

-- -----------------------------------------------------
-- Table `treninky`.`data`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `treninky`.`data` ;

CREATE  TABLE IF NOT EXISTS `treninky`.`data` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `datum` DATE NOT NULL ,
  `trenink` TEXT NOT NULL ,
  `casy` TEXT NULL ,
  `misto` TEXT NULL ,
  `delka` TEXT NULL ,
  `podminky` TEXT NULL ,
  `poznamka_a` TEXT NULL ,
  `poznamka_t` TEXT NULL ,
  `splneno` TINYINT NULL DEFAULT 2 ,
  `zadano` DATETIME NULL ,
  `zobrazeno` DATETIME NULL ,
  `uzivatele_id` INT UNSIGNED NOT NULL ,
  PRIMARY KEY (`id`, `uzivatele_id`) ,
  INDEX `fk_data_uzivatele_idx` (`uzivatele_id` ASC) ,
  CONSTRAINT `fk_data_uzivatele`
    FOREIGN KEY (`uzivatele_id` )
    REFERENCES `treninky`.`uzivatele` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

Nastaveni gridu:

use \NiftyGrid\Grid;

class DataGrid extends Grid
{
    protected $data;

    public function __construct($data)
    {
        parent::__construct();
        $this->data = $data;
    }

    protected function configure($presenter)
    {
        $source = new \NiftyGrid\NDataSource($this->data->select('id, datum, trenink'));
        $this->setDataSource($source);
        $this->setWidth('100%');
        $this->addColumn('datum', 'Datum', '50px');
        $this->addColumn('trenink', 'Trénink', '100px')
            ->setTextEditable();
        $this->addButton("smazat", "Smazat");
        $this->addButton(Grid::ROW_FORM, "Rychlá editace")
                ->setClass("fast-edit");
    }
}
caslavak
Člen | 7
+
0
-

Vyřešeno. V config.neon musel být u database:
reflection: conventional