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
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
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)