Prosím o pomoc při rozběhnutí doplňku PollControl
- xciza
- Člen | 194
Zdravím, chtěl bych rozběhnout doplněk PollControl pro ankety.
Ale nějak se v tom návodu pro implementaci do své aplikace ztrácím. Jsem
začátečník.
Vytvořím si nový presenter podle toho ukázkového a nahraji všechno tam kde
má být. Ale nechápu co mám udělat tady: Poté je potřeba vytvořenému
objektu předat objekt modelu, což je jakákoliv třída implementující
rozhraní PollControlModel.
V textu je také: PollControl je distribuován i s příkladovým
modelem. – Jestli to dobře chápu, stačí do .latte napsat jenom makro
pro komponentu kde ji chci mít a mělo by to jít?
Děkuji za rady
- frosty22
- Člen | 373
Aby jsi mohl mít vlastní implementaci ukládání například do jakékoliv databáze, souborů, atd. tak by sis právě měl vytvořit model, který implementuje ono rozhraní PollControlModel viz file PollControlModel.php a je tam právě i příkladový model PollControlModelImpl.php, který to ukládá do databáze za využití Dibi, což ty asi používáš Nette/Database (?) proto by sis musel napsat vlastní model, případně tento upravit, aby bral v potaz Nette/Database, čili model, který má ony metody:
getAllVotesCount – vrací počet všech hlasujících
INT
getQuestion – vrací otázku STRING
getAnswers – vrací pole objektů
PollControlAnswer (každý objekt = 1 odpověď, viz
PollControlAnswer.php
isVotable – vrací zda již tento uživatel
hlasoval BOOL
Dále ano v šabloně by pak mělo stačit:
{control pollControl}
pokud jsi tedy pojmenovat továrničku v presenteru createComponentPollControl:
<?php
public function createComponentPollControl() {
$poll = PollControl::factory('link');
$poll->setModel(new PollControlModelImpl(1));
return $poll;
}
?>
A tedy ta 1 je ID ankety
Případně ještě takovej test model, aby ses více zorientovat, pokud jsi s rozhraními ještě nepracoval a máš problém zde (zkus ho tam předat a uvidíš):
<?php
class PollControlModelImpl {
private $id;
public function __construct($id)
{
$this->id = $id;
}
public function getAllVotesCount()
{
return 159;
}
public function getQuestion()
{
return "Otázka ID {$this->id}: Kolik je hodin?";
}
public function getAnswers()
{
$answers = array();
$answers[] = new PollControlAnswer("12 hodin", 1, 456);
$answers[] = new PollControlAnswer("6 hodin", 2, 789);
return $answers;
}
public function isVotable()
{
return true;
}
}
?>
- xciza
- Člen | 194
Tak teď už vůbec nevím :) Vytvořil jsem si ten presenter – tam problém nebude
public function createComponentPollControl() {
$poll = PollControl::factory('link');
// alternatively:
// $poll = new LinkPollControl();
$poll->setModel(new PollControlModelImpl(1));
return $poll;
}
Teď vezmu ze staženého archivu soubor PollControllModel.php a nakopíruji ho do složky models v projektu, dám mu implementaci PollControlModel a u každé metody doplním co má dělat?
Co se týče dibi, tak nevím jestli to je ono, ale používám to základní co je v tutorálu-to postupné vybírání…