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
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
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");
}
}