Předání dat z Presenteru do Modelu, vytvoření formuláře

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

Zdravím, řeším v Nette tento problém. Mám presenter DetailPresenter reprezentující detail produktu, vypadá takto

<?php

namespace App\Presenters;

use App\Model\ProductDetail;
use Nette;

class DetailPresenter extends BasePresenter {

    private $database;

    private $user;

    private $id;

    public function __construct(Nette\Database\Context $database, \Nette\Security\User $user) {
        $this->database = $database;
        $this->user = $user;
    }


    public function renderDefault($id) {
        $this->id = $id;
        $this->template->product = new ProductDetail($this->database, $id);
        $this->template->userId = $this->user->getId();
    }
}

Objekt ProductDetail který vytvořím v sobě uchovává všechny informace (od obecných informací až po pole objektů Recenze).
Potřeboval bych na detailu produktu pod výpisem recenzí (což už mám hotové, objekt Recenze obshauje mimo jiné id uživatele který ji napsal, text a id produktu, ke kterému patří) zobrazit formulář vložení/update recenze. Pokud uživatel na daný produkt napsal recenzi, zobrazí se ve value formuláře daný text a dané hodnocení které může updatovat. Pokud žádnou recenzi nenapsal, zobrazí se prázdný formulář s textfieldem, selectorem hodnocení a submitem.

Zkoušel jsem to nějak udělat přes továrnu, tam jsem ale nějak nemohl dostat ID detailu protože jsem nemohl k objektu ProductDetail přistoupit
například přes

$this->template->product

Dále pak bojuji s nějakým layoutem formulářů.
A otázky:

1. Jaké řešení by bylo pro tuhle situaci nejlepší? (Pro vložení recenze je třeba id_produktu (dá se získat s ProductDetail objektu), id_uživatele (to se dá, řpedokládám zjistit z usera), text recenze a hodnocení. Jako řešení mě napadla nějaká form factory která by podle toho co vrátí např metoda hasUserReview() vykreslila prázdný nebo vyplněný formulář. Ale nejsem si s form factory a formulářema v nette obecně moc jistý, proto prosím o radu.
2.Lze nějak snadno upravit formulář dle mých představ? (Obalit například 2 inputy do jednoho divu, přidat inputu classu a tak dále?)

Děkuji