Zobrazení počtu stažení položek z tabulky v adminu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- ricardo15
- Člen | 5
Zdravím,
měl bych prosbu jak vyřešit v presenteru hodnotu počtu stažení z jiné
tabulky?
Jednotlivé tabulky v DB:
tabulka fangates (hlavní tabulka s záznamy pro stažení)
id, name, slug, active, created, file_url, sample_packs
tabulka fangates_stats_downloads (druhá tabulka evidující jednotlivá
stažení)
id, ip, created, fangates_id
<?php
namespace App\AdminModule\Presenters;
class FangatePresenter extends CrudPresenter {
/** @inject @var \App\AdminModule\Model\Fangate */
public $crudModel;
public function handleRemove($id) {
parent::handleRemove($id);
$this->flashMessage("Fangate removed.");
$this->redirect("default");
}
public function handleSwitch($id) {
$this->crudModel->switchSamplePacks($id);
$this->flashMessage("Swtiched.");
$this->redirect("default");
}
public function createComponent($name) {
switch ($name) {
case "grid" :
$grid = new \Nextras\Datagrid\Datagrid;
$grid->addCellsTemplate(WWW_DIR . '/app/AdminModule/templates/grid/@grid.columns.latte');
$grid->setDatasourceCallback(function($filter, $order, \Nette\Utils\Paginator $paginator = NULL) {
return $this->crudModel->getDataSource($paginator->length, $paginator->offset);
});
$grid->setPagination(20, function($wTt) {
$itemsCount = $this->crudModel->getCount();
return $itemsCount;
});
$grid->addColumn('name');
$grid->addColumn('slug');
$grid->addColumn('created');
$grid->addColumn('sample_packs', 'Sample packs');
$grid->addColumn('downloads');
$grid->addColumn('delete');
return $grid;
default: return parent::createComponent($name);
}
}
}
?>
Cílem je zobrazit v adminu v kolonce u řádku (id) downloads (paměťová hodnota) počet stažení (fangates_id) z tabulky fangates_stats_downloads.
Ještě zdrojový kód pro model
<?php
namespace App\AdminModule\Model;
class Fangate extends Crud {
public function __construct(\DibiConnection $dibi) {
parent::__construct($dibi);
$this->dibi = $dibi;
$this->table = "fangates";
}
public function switchSamplePacks($id) {
$stat = $this->dibi->select("sample_packs")
->from($this->table)
->where('id = %i', $id)
->fetchSingle();
return $this->dibi->update($this->table, array("sample_packs" => !$stat))
->where('id = %i', $id)
->execute();
}
}
?>
Editoval ricardo15 (3. 2. 2016 17:10)