Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 30-05-2009 13:20:09

Vincent
Administrateur
Date d'inscription: 19-09-2008
Messages: 510

[Résolu] [Zend_Form] Problème avec mon formulaire

Bonjour,

J'ai un petit problème avec mon formulaire dans un module tout simple de gestion de news. Systématiquement, lorsque je veux éditer éditer ou supprimer une actualité, j'ai ce message d'erreur :

Notice: Use of undefined constant row - assumed 'row' in app\application\models\DbTable\News.php on line 18

Voici la classe en question, News.php

public function getNews($id)
    {
        $id = (int)$id;
        $row = $this->fetchRow('test_id = '. $id);
               LIGNE 18
        if (!row)
        {
            throw new Exception("Impossible de trouver l'id $id");
        }
        return $row->toArray();
    }

    function updateNews($id, $champ1, $champ2, $champ3, $champ4)
    {
        $data = array(
            'test_champ1'    => $champ1,
            'test_champ2'    => $champ2,       
            'test_champ3'    => $champ3,
            'test_champ4'    => $champ4           
        );
        $this->update($data, 'test_id = '. (int)$id);
    }
(...)

Formulaire d'ajout/d'édition

class Form_News_Add extends Zend_Form
{
    public function __construct($options = null)
    {
        parent::__construct($options);
        $this->setName('news');
       
        $id = new Zend_Form_Element_Hidden('id');

        $champ1 = new Zend_Form_Element_Text('champ1');
        $champ1->setLabel('champ1')
        ->setRequired(true)
        ->addFilter('StripTags')
        ->addFilter('StringTrim')
        ->addValidator('NotEmpty');
       
        (champ2, champ3... etc.)
       
        $submit = new Zend_Form_Element_Submit('submit');
        $submit->setAttrib('id', 'submitbutton');
       
        $this->addElements(array($id, $champ1, $champ2, $champ3, $champ4 $submit));

IndexController (avec EditAction)

public function editAction()
    {
        $this->view->title = "Editer";
        $this->view->headTitle($this->view->title, 'PREPEND');
       
        $form = new Form_News_Add();
        $form->submit->setLabel('Save');
        $this->view->form = $form;


        if ($this->getRequest()->isPost()) {
            $formData = $this->getRequest()->getPost();
            if ($form->isValid($formData)) {
               
                // On récupère l'id directement dans l'url
                $id     = $this->_request->getParam('id', null);
                $champ1 = $form->getValue('champ1');
                $champ2 = $form->getValue('champ2');
                $champ3 = $form->getValue('champ3');
                $champ4 = $form->getValue('champ4');
                // Requête de mise à jour
                $news = new Model_DbTable_News();
                $news->updateNews($id, $champ1, $champ2, $champ3, $champ4);
               
                $this->_redirect('/');
            } else {
                $form->populate($formData);
            }
        } else {
            $id = $this->_request->getParam('id', 0);
            if ($id > 0) {
                $news = new Model_DbTable_News();
                $form->populate($news->getNews($id));
            }
        }   
    }

J'aurais aussi aimé comment éditer ma news sans récupérer l'id par l'url. Car dans le cas présent je ne me sers pas de "$id = new Zend_Form_Element_Hidden('id');" puisque je récupère l'url avec "$id     = $this->_request->getParam('id', null);"


A noter que l'édition marche correctement à part ça :p


Merci

Dernière modification par miboo (02-06-2009 10:24:10)


aka miboo

Hors ligne

 

#2 30-05-2009 18:08:50

vg33
Membre
Date d'inscription: 30-07-2008
Messages: 46

Re: [Résolu] [Zend_Form] Problème avec mon formulaire

Code:

if (!$row)

As-tu lu l'erreur générée ?
tongue

Hors ligne

 

#3 30-05-2009 18:10:10

vg33
Membre
Date d'inscription: 30-07-2008
Messages: 46

Re: [Résolu] [Zend_Form] Problème avec mon formulaire

miboo a écrit:

J'aurais aussi aimé comment éditer ma news sans récupérer l'id par l'url. Car dans le cas présent je ne me sers pas de "$id = new Zend_Form_Element_Hidden('id');" puisque je récupère l'url avec "$id     = $this->_request->getParam('id', null);"

Pourquoi ne pas passer l'id en paramètre ? C'est pourtant le plus simple, non ?

Hors ligne

 

#4 01-06-2009 01:40:13

Vincent
Administrateur
Date d'inscription: 19-09-2008
Messages: 510

Re: [Résolu] [Zend_Form] Problème avec mon formulaire

vg33 a écrit:

miboo a écrit:

J'aurais aussi aimé comment éditer ma news sans récupérer l'id par l'url. Car dans le cas présent je ne me sers pas de "$id = new Zend_Form_Element_Hidden('id');" puisque je récupère l'url avec "$id     = $this->_request->getParam('id', null);"

Pourquoi ne pas passer l'id en paramètre ? C'est pourtant le plus simple, non ?

Hmm, en fait j'ai rien contre. Mais je me demandais si ce n'était pas recommandé de ne pas récupérer d'arguments via l'url si possible.

Pour le message d'erreur je l'ai bein lu big_smile , mais je t'avoue que ces morceaux de programmes sont inspirés d'un tutoriel qui est censé marcher... sad


aka miboo

Hors ligne

 

#5 01-06-2009 15:29:13

vg33
Membre
Date d'inscription: 30-07-2008
Messages: 46

Re: [Résolu] [Zend_Form] Problème avec mon formulaire

Pour les paramètres : il ne faut jamais faire confiance aux données utilisateur, que ce soit en GET, POST ou COOKIE. Il faut partir du principe que l'utilisateur peut tout modifier.
Conséquence : tu dois filtrer et valider toutes les données GPC. De cette façon, tu te fiches de la méthode employée, tu prends le plus simple pour toi.
Pour moi, la plupart de mes actions se font en cliquant sur des liens images (icônes). J'utilise donc du GET, que je valide strictement (transtypage + validation métier). Ce n'est pas plus dangereux que du POST ou de COOKIE.

Hors ligne

 

#6 02-06-2009 09:33:43

Vincent
Administrateur
Date d'inscription: 19-09-2008
Messages: 510

Re: [Résolu] [Zend_Form] Problème avec mon formulaire

vg33 a écrit:

Pour les paramètres : il ne faut jamais faire confiance aux données utilisateur, que ce soit en GET, POST ou COOKIE. Il faut partir du principe que l'utilisateur peut tout modifier.
Conséquence : tu dois filtrer et valider toutes les données GPC. De cette façon, tu te fiches de la méthode employée, tu prends le plus simple pour toi.
Pour moi, la plupart de mes actions se font en cliquant sur des liens images (icônes). J'utilise donc du GET, que je valide strictement [b](transtypage + validation métier)[/b}. Ce n'est pas plus dangereux que du POST ou de COOKIE.

Je vais voir de ce côté là alors smile

Edit: j'ai rien dis, j'avais le nez devant ... le $ oublié big_smile

Dernière modification par miboo (02-06-2009 10:23:53)


aka miboo

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