今天做项目的工程中发现了一个问题(使用的是zend framework 1.11版本),就是使用input提交表单与button提交表单的差别。情况如下:

html视图部分(index.phtml):

 

   
   
   
   
  1. <form action="register/index" method="post"> 
  2.       <p><label for="mobile">手机号label><br> 
  3.       <input type="text" name="mobile" id="mobile" value="">p> 
  4.       <p> 
  5.       <button type="submit" name="gettemp">获取口令button> 
  6.       p> 
  7.      <p><label for="sms_temp">口令label><br> 
  8.         <input type="password" name="sms_temp" id="sms_temp"> 
  9.      p> 
  10.      <p><input type="checkbox" id="agree" name="agree" value="1" checked="checked"><label 
  11.                 for="agree">已阅读并同意label><a href="#">《注册协议》a> 
  12.       p> 
  13.  
  14.       <p style="margin:1em 0 2em;"><input type="submit" name="auth" value="验证口令并继续"/>p> 
  15.     form> 

 

controller部分(RegisterController):

 

   
   
   
   
  1. public function indexAction()  
  2.     {  
  3.         $mobile = trim($this->_getParam('mobile'));  
  4.         $sms_temp = trim($this->_getParam('sms_temp')); //注册用户收到的短信口令  
  5.         //获取临时口令  
  6.         if (isset($_POST['gettemp']) && $_POST['gettemp']) {  
  7.            echo '获取临时密码。';  
  8.         }  
  9.  
  10.         //验证口令并继续,验证成功则注册成功  
  11.         if (isset($_POST['auth']) && $_POST['auth']) {  
  12.             echo '验证口令并继续。';  
  13.         }  
  14.     } 

当我点击“获取口令”的时候,页面没有反应,没有进入

 

   
   
   
   
  1. if (isset($_POST['gettemp']) && $_POST['gettemp']) {  
  2.            echo '获取临时密码。';  
  3.         } 

条件语句中,而我点击“验证口令并继续”时进入了

 

   
   
   
   
  1. if (isset($_POST['auth']) && $_POST['auth']) {  
  2.             echo '验证口令并继续。';  
  3.         } 

条件语句中

也就是说$_POST['gettemp'] 没有值,于是将html视图文件修改为:

 

   
   
   
   
  1. <form action="register/index" method="post">       <p><label for="mobile">手机号label><br>         
  2. <input type="text" name="mobile" id="mobile" value="">p>         
  3. <p>    
  4. <button type="submit" name="gettemp" value="获取口令">获取口令button> 
  5. p>        
  6. <p><label for="sms_temp">口令label><br> 
  7. <input type="password" name="sms_temp" id="sms_temp"> 
  8. p>        
  9. <p><input type="checkbox" id="agree" name="agree" value="1" checked="checked"><label                 for="agree">已阅读并同意label><a href="#">《注册协议》a> 
  10. p>   
  11. <p style="margin:1em 0 2em;"><input type="submit" name="auth" value="验证口令并继续"/> 
  12. p>       
  13. form>  

注意第4行的变化,添加了value="获取口令",问题解决。