2010-06-25 4 views
0

que je fais ce tutoriel: http://www.phpeveryday.com/articles/Zend-Framework-Database-Creating-Input-Form-P494.htmlont besoin d'aide pour comprendre getRequest() Zend Framework

Nous construisons une forme d'entrée simple à l'aide POST et de le soumettre à une base de données mySQL. Tout fonctionne bien. J'essaie juste de comprendre la fonction getRequest().

Dans le contrôleur, nous avons ceci:

public function registerAction() 
{ 
    $request = $this->getRequest(); 

    $this->view->assign('action',"process"); 
    $this->view->assign('title','Member Registration'); 
    $this->view->assign('label_fname','First Name'); 
    $this->view->assign('label_lname','Last Name'); 
    $this->view->assign('label_uname','User Name'); 
    $this->view->assign('label_pass','Password'); 
    $this->view->assign('label_submit','Register');  
    $this->view->assign('description','Please enter this form completely:');   
} 

puis en vue:

<form name="register" method="post" action="<?php echo $this->escape($this->action)?>"> 
    <table> 
    <tr> 
     <td><?php echo $this->escape($this->label_fname)?></td> 
     <td><input type="text" name="first_name"></td> 
    </tr> 
    <tr> 
     <td><?php echo $this->escape($this->label_lname)?></td> 
     <td><input type="text" name="last_name"></td> 
    </tr> 
    <tr> 
     <td><?php echo $this->escape($this->label_uname)?></td> 
     <td><input type="text" name="user_name"></td> 
    </tr> 
    <tr> 
     <td><?php echo $this->escape($this->label_pass)?></td> 
     <td><input type="password" name="password"></td> 
    </tr> 
    </table> 
    <input type="submit" name="submit" value="<?php echo $this->escape($this->label_submit);?>"> 
    </form> 

donc ce que je ne comprends pas pourquoi nous avons besoin d'un getRequest() si je l'ai déjà avez la méthode = "post" et l'ensemble d'action? Si je le commente, le script ne fonctionne pas. Je vois que c'est nécessaire, mais je ne comprends pas pourquoi - d'autant plus que la variable $ request ne semble pas être utilisée?

+0

Avant longtemps, vous devriez regarder dans la classe Zend_Db_Table_Abstract. Il a des méthodes pour gérer les instructions SQL afin que vous ne deviez pas rouler les vôtres. Le code dans le didacticiel est mûr pour une attaque par injection SQL. –

+0

@ peter-Je crois que c'est le prochain tutoriel là-bas, il commence à regarder d'autres façons de nourrir le Db. – Joel

+0

Cool, Vous aimerez probablement aussi Zend_Form, il remplit les formulaires avec des valeurs en un clin d'oeil. –

Répondre

1

Dans le code que vous avez fourni, $ request ne semble pas du tout être utilisé. Je ne vois pas pourquoi le fait de le commenter se briserait.

Que se passe-t-il, exactement, lorsque vous le commentez?

La fonction getRequest() permet d'obtenir l'objet Request, qui vous donne des paramètres et autres (contrôleur, action, etc.);

EDIT:

J'ai regardé le tutoriel, et il a ceci:

12 
13 $sql = "INSERT INTO `user` 
14   (`first_name` , `last_name` ,`user_name` ,`password`) 
15   VALUES 
16   ('".$request->getParam('first_name')."', '".$request->getParam('last_name')."', '".$request->getParam('user_name')."', MD5('".$request->getParam('password')."'))"; 
17 $DB->query($sql); 

Vous remarquerez qu'il utilise la variable de requête $ pour obtenir les paramètres: ' first_name ',' last_name ',' user_name ',' password '

Et les enregistre dans la base de données.

+0

Commentant, je reçois le message "Une erreur d'application s'est produite". décommentez-le et cela fonctionne. – Joel

+0

@ Valorin - le code SQL que vous venez d'ajouter est dans une méthode et une vue différentes, et contient aussi son propre getRequest avec $ request. – Joel

+0

Pouvez-vous obtenir le traceroute de l'erreur? –

Questions connexes