Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
1) Je souhaitais avoir un élément de réponse à propos de l'enregistrement des données d'un formulaire.
je ne sais pas trop où disposer au mieux mes différents codes. Entre le controller, mon objet, ma table (DAO???). Bon je sais je n'utilise pas les bons termes, c'est encore un peu flou pour moi.
Je voudrais savoir ce qu'il y a de mieux à faire, quelle est la meilleure facon de procéder.
(Je teste doctrine)
Mon Controller:
class AdminController extends Zend_Controller_Action { public function addAction() { $this->view->form = $form = new Form_Question_Add(); if($this->_request->isPost()) { $formData = $this->_request->getPost(); if($form->isValid($formData)) { $question = new Question(); $question->fromArray($form->getValues(true)); $question->created_at = new Doctrine_Expression('NOW()'); $question->validate = 1; $question->save(); $this->_redirect('/admin'); } } }
mon Objet Question.php
class Question extends BaseQuestion { }
et ma Table QuestionTable.php
<?php /** */ class QuestionTable extends Doctrine_Table { }
----------------------------------
J'ai vu ce genre de chose, est-ce que c'est mieux de procéder ainsi? Pour eviter de faire les opérations sur la BDD directement dans le controller?
Controller
<?php class AdminController extends Zend_Controller_Action { public function addAction() { $this->view->form = $form = new Form_Question_Add(); if($this->_request->isPost()) { $formData = $this->_request->getPost(); if($form->isValid($formData)) { $question = new Question(); $question->fromArray($form->getValues(true)); $question->created_at = new Doctrine_Expression('NOW()'); $question->validate = 1; QuestionTable::saveFromForm($question); $this->_redirect('/admin'); } } }
QuestionTable.php
<?php /** */ class QuestionTable extends Doctrine_Table { public static function saveFromForm(Question $q) { try { $q->save(); } catch (Exception $e) { throw new Exception($e->getMessage()); return false; } }
2) Ca vous arrive de mettre des exceptions dans les controllers?
Merci d'avance pour vos reponses,
Cordialement,
PS: il devrait y avoir un endroit ou on devrait mettre les bonnes pratiques.
Hors ligne
Ceci n'engage que moi
1/ Pour la partie MVC, l'idéal et de ne pas appeler des Zend_Db_Table dans tes controlleurs, mais de passer par des managers. Après libre à toi de laisser lever des exceptions lorsque que tu rencontres une erreur.
2/ Je mets des exceptions dans mes controllers lorsque je valide l'url. Si j'attends systématiquement une clé, je lève une exception. Elle est capturé par l'erreur controlleur et fournit une 404.
Hors ligne