praca s modelom pri prihlasovani

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

Zdravim,

v Nette som zelenac. „Problem“ som vyriesil, ale neviem, ci to robim principialne spravne a ci dobre dodrziavam MVC(P) architekturu. Takze, mam SignUpPresenter ktory sluzi na registraciu uzivatelov. Po odoslani formulara sa zavola metoda signUpFormSubmitted($form) v tomto presenteri, ktora zisti, ci uzivatel, ktoreho ideme registrovat uz v systeme neexistuje a podobne. Zatial vsetko ok. Vsetko funguje, pridanie do databazy a podobne. Lenze doteraz som mal pridavanie uzivatela do databazy priamo v tej funkcii, no ked sa nad tym zamyslim, tak presne toto je uloha pre model.

Tak som si spravil prototyp modelu SignUpModel v models/ , dedil som od Nette\Object a potom v tej funkcii signUpFormSubmitted() vytvorim objekt $SignUp = new SignUpModel(); a nasledne zavolam nieco ako
$SignUp->register($submittedValues), kde v submittedValues su udaje o userovi pri registracii a tato metoda vrati true / false podla toho ci sa podarilo usera zaregistrovat.

Takze otazka, robim to principialne spravne?

Este podotknem, ze som si musel v config.neon zadefinovat ten „service“, tak ako som to mal uz zo vzoroveho prikladu, takto nejako:

signupmodel:

factory: [@model, createSignUpService]

potom som este pripisal metodu createSignUpService() do Model-u

<?php
class Model extends Nette\Object {

    /** @var Nette\Database\Connection */
    public $database;

    public function __construct(Nette\Database\Connection $database) {
	$this->database = $database;
    }

    public function createAuthenticatorService() {
	return new Authenticator($this->database->table('users'));
    }

    public function createSignUpService() {
	return new SignUpModel();
    }

}
?>

Je to ok? Ide mi najma o to, ze ak filozofiou presentera je robit medzivrstvu medzi modelom a view, tak potom by sa mala „datova“ logika preniest do Modelu, kde ukladam do databazy a podobne.

Cital som viac clankov ohladom tohoto a niekto radi robit tu aplikacnu logiku aj s queries na db rovno v presenteri a nezatazovat s tym model este, ale podla mna je tento moj sposob celkom validny nie? :)

Editoval stewe (3. 7. 2011 16:31)

tomolas
Člen | 66
+
0
-

Nazdar,
chápeš to podľa mňa úplne správne.

Dobrý príklad, ktorý ti môže byť vodítkom je v sandboxe(kedysi skeleton). Nájdeš to medzi stiahnutými súbormi, keď si siahneš Nette. Rieši sa tam síce prihlásenie, ale s registráciou je to vlastne veľmi podobné (to rozdelenie úloh).
Mrkni si model/UsersModel.php, presenters/SignPresenter.php .. a tak.

Good luck!