promenna $moduleName v komponente

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

Zdravim, podle quick start jsem si postavil Ukolnicek, pote jsem si ho rozdelil na admin module a front module zde nastal problem. Jak vytvorit v komponente sablonu pro oba moduly zkousel jsem podle $moduleName ale hlasi mi to ze to promennou nezna. Pro jistotu pripinam php task componenty podle quickstart

<?php
use Nette\Application\UI;
use Nette\Database\Table\Selection;
use Nette\Application\UI\Presenter;

class TaskList extends UI\Control
{
    /** @var \Nette\Database\Table\Selection */
    private $tasks;
    /** @var \Model */
    private $model;

    public function __construct(Selection $tasks, \Model $model)
    {
        parent::__construct(); # vždy je potřeba volat rodičovský konstruktor
        $this->tasks = $tasks;
        $this->model = $model;
    }

    public function handleMarkDone($taskId)
{
    $this->model->getTasks()->where(array('id' => $taskId))->update(array('done' => 1));
    $this->presenter->redirect('this');
}

    /** @var boolean */
private $displayUser = TRUE;

/** @var boolean */
private $displayTaskList = FALSE;

public function setDisplayTaskList($displayTaskList)
{
    $this->displayTaskList = $displayTaskList;
}

public function setDisplayUser($displayUser)
{
    $this->displayUser = $displayUser;
}

    public function render()
    {
        $this->template->setFile(__DIR__ . '/TaskList.latte');
        $this->template->tasks = $this->tasks;
            $this->template->displayUser = $this->displayUser;
    $this->template->displayTaskList = $this->displayTaskList;

        $this->template->render();
    }
}
JuniorJR
Člen | 181
+
0
-

Asi bych tam injektoval přes konstruktor proměnnou, která bude reprezentovat požadovanou šablonu.
Něco jako:

class TaskList extends UI\Control
{
    const MODULE_FRONT = 'front';
    const MODULE_ADMIN = 'admin';

    private $moduleName;

    public function __construct(Selection $tasks, \Model $model, $moduleName = self::MODULE_FRONT)
    {
        parent::__construct();
        ...
        $this->moduleName = $modulName;
    }


    public function render()
    {
        // a tady něco ve stylu
        if ($this->moduleName == self::MODULE_ADMIN) {
            $this->template->setFile(__DIR__ . '/TaskListAdmin.latte');
        } else {
            $this->template->setFile(__DIR__ . '/TaskListFront.latte');
        }
        $this->template->tasks = $this->tasks;
        $this->template->displayUser = $this->displayUser;
        $this->template->displayTaskList = $this->displayTaskList;

        $this->template->render();
    }
}

Snad je to, co si chtěl.

Editoval JuniorJR (2. 1. 2012 14:06)