Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 08-10-2009 00:07:48

maxparm
Nouveau membre
Date d'inscription: 18-07-2008
Messages: 7

Bonnes Pratiques Enregistrement Formulaire?

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:

Code:

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

Code:

class Question extends BaseQuestion
{

}

et ma Table  QuestionTable.php

Code:

<?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

Code:

<?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

Code:

<?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

 

#2 08-10-2009 10:29:44

sguary
Membre
Lieu: Rennes
Date d'inscription: 23-02-2009
Messages: 15
Site web

Re: Bonnes Pratiques Enregistrement Formulaire?

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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages