Zoradovanie dat v tabulke

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

Caute. Navrhol som si sposob ako zoradovat data v tabulke, ale hladam akym sposobom by som to vedel urobit znovupouzitelne. Uvazoval som ci by sa to nedalo pouzit ako komponenta, ale problem je v tom ze komponentu viem volat v presenteri len raz, do BasePresentru to nechcem umiestnovat. Nevedeli by ste mi poradit ako to vhodne riesit?

class Presenter extends \BasePresenter {

    /** @persistent Default column */
    public $order = "datetime";

    /** @persistent Default by */
    public $sort = "asc";

    /**
     * sortLink
     * @param string $column
     * @param string|NULL $title
     * @param array $attributes
     * @return Nette\Utils\Html
     */
    public function sortLink($column, $title = NULL, $attributes = array()) {
        $linkParams['order'] = $column;

        if ($title == NULL) {
            $title = $column;
        }

        if ($column == $this->order) {
            $linkParams['sort'] = $this->sort == "asc" ? "desc" : "asc";
            $attributes["class"] = "sort-$this->sort";
        } else {
            $linkParams['sort'] = "asc";
        }

        $url = $this->link("this", $linkParams);
        $link = Html::el('a', $attributes)->href($url)->setText($title);

        return $link;
    }

    public function renderDefault($order, $sort) {
        \Nette\Diagnostics\Debugger::barDump("$this->order $this->sort");
    }

}

sablona latte

<thead>
    <tr>
        <th>{$presenter->sortLink("type", "Typ")}</th>
        <th>{$presenter->sortLink("datetime", "Dátum")}</th>
    </tr>
</thead>