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
+
0
-

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;

    }

}
Oli
Člen | 1215
+
0
-

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…

Krab
Člen | 10
+
0
-

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
+
0
-

komponenty samy monitorujou pripojeni k presenteru. to ti nestaci? :)