2010-06-25 51 views
0

我做这个教程: http://www.phpeveryday.com/articles/Zend-Framework-Database-Creating-Input-Form-P494.html需要帮助理解Request()方法Zend框架

我们正在建设使用POST一个简单的输入表单并提交到MySQL数据库。一切工作正常。我只是试图让我的头在getRequest()函数周围。

在控制器方面,我们有这样的:

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:');   
} 

,然后在视图:

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

所以我不明白的是,为什么我们需要一个Request()方法,如果我已经有方法=“后”和行动设置?如果我将它评论出来,脚本并不是网络。我看到它是需要的,但我不明白为什么 - 特别是因为$ request变量似乎没有被使用?

+0

不久你应该看看Zend_Db_Table_Abstract类。它有处理SQL语句的方法,所以你不必自己推出。本教程中的代码适用于SQL注入攻击。 – 2010-06-25 04:58:55

+0

@彼得 - 我相信那是下一个教程 - 他开始寻找其他方式来提供Db。 – Joel 2010-06-25 05:02:42

+0

很酷,你可能也会喜欢Zend_Form,它使用填充值填充表单。 – 2010-06-25 05:43:09

回答

1

在您提供的代码中,根本没有使用$ request。我不明白为什么评论会打破。

当你评论它时,会发生什么? getRequest()函数用于获取Request对象,该对象为您提供参数等(即controller,action等);

编辑:

我看看教程,它有这样的:

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); 

你会注意到,它使用$ request变量来获取参数: “ first_name','last_name','user_name','密码'

并将它们保存到数据库中。

+0

发表评论,我收到“An Error Occurred Application Error”消息。取消它的注释并且工作。 – Joel 2010-06-25 04:55:22

+0

@ Valorin - 您刚刚添加的SQL代码位于不同的方法和视图中,并且还包含它自己的带有$ request的getRequest。 – Joel 2010-06-25 04:57:20

+0

你能得到错误的traceroute吗? – 2010-06-25 04:59:09