Monitorování připojení presenteru způsobí nepředávání parametrů signálům
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Krab
- Člen | 10
Takže v konstruktoru monituruji přítomnost presenteru. Pokud zakomentuji monitoring, handleCount normalne dostane parametr. Jinak ho prostě nedostane.
<?php
/**
* Created by PhpStorm.
* User: Krab
* Date: 01.12.13
* Time: 8:16
*/****
class Grid extends Nette\Application\UI\Control
{
public function __construct(Nette\ComponentModel\IContainer $parent = NULL, $name = NULL) {
parent::__construct($parent, $name);
$this->monitor('BasePresenter');
}
protected $columns = array();
protected $dataSource = array();
protected $paginator = NULL;
protected $paginSet = false;
public function render()
{
$template = $this->template;
$template->columns = $this->columns;
$template->dataSource = $this->dataSource;
$template->paginator = $this->paginator;
$template->setFile(__DIR__ . '/grid.latte');
$template->render();
}
public function setPaginator($paginator) {
$this->paginator = $paginator;
}
public function getPaginator($paginator) {
return $this->paginator;
}
public function editLink($link) {
return '<a href="' . $link . '"><i class="icon-list-alt"></i></a>';
}
public function showLink($link) {
return '<a href="' . $link . '"><i class="icon-calendar"></i></a>';
}
public function pencilLink($link) {
return '<a href="' . $link . '"><i class="icon-pencil"></i></a>';
}
public function handleCount($count) {
var_dump($count);
exit;
$this->getPresenter(TRUE)->getSession('grid')->count = 10;
}
protected function attached($presenter)
{
parent::attached($presenter);
/*
if ($this->paginator && !$this->paginSet) {
if ($presenter instanceof BasePresenter) {
// $count = $presenter->getSession('grid')->count;
//if (!$count) $count = 5;
//$this->paginator->setItemsPerPage($count);
$this->paginator->setPage($presenter->page);
if (is_array($this->dataSource)) {
$this->dataSource = array_slice($this->dataSource, $this->paginator->getOffset(), $this->paginator->getLength(), true);
}
else {
$this->dataSource->limit($this->paginator->getLength(), $this->paginator->getOffset());
}
$this->paginSet = true;
}
}
*/
}
public function setDataSource($dataSource, $paginator = true) {
$this->dataSource = $dataSource;
if ($paginator) {
$pagin = new Nette\Utils\Paginator();
if (is_array($dataSource)) {
$pagin->setItemCount(count($dataSource));
}
else {
$temp = clone $dataSource;
$pagin->setItemCount($temp->count());
}
$this->setPaginator($pagin);
}
}
public function registerColumns($columns) {
$this->columns = $columns;
}
}
- Krab
- Člen | 10
Oli napsal(a):
V konstruktoru ještě nemá komponenta přístup k presenteru. Na to je metoda attached (nebo tak nějak se jmenuje). Až se řádně zavede komponenta, tak tady má přístup k presenteru. Je to myslím první místo, kde je presenter přístupnej…
proto tam nastavuji ten monitoring :D
- David Matějka
- Moderator | 6445
komponenty samy monitorujou pripojeni k presenteru. to ti nestaci? :)