Prosím o pomoc při rozběhnutí doplňku PollControl

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

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

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

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í…