代码工作正常,但如果数据为空,则时间验证不起作用

时间:2012-05-01 10:56:38

标签: cakephp

我已经生成了一个代码生成的随机数并将所有数字保存在数据库中(该部分代码正在运行)但我在验证时遇到问题而没有在视图页面上输入任何no重定向此url admin_manage_epin.ctp,验证无法正常工作

admin_create_epin.ctp(视图)

<tr>
Add E-pin:(No of E-Pin)
<td><?php echo $this->Form->input('e_pin',array('label'=>false));?></td> 
</tr>

epins_controllers.php(控制器)

public function admin_create_epin(){
 if(!empty($this->data)){
   $limit = $this->data['Epin']['e_pin'];

   for($i=0;$i<$limit;$i++)
     {
     $random = substr(number_format(time() * rand(),0,'',''),0,11)."<br/>";
     $this->data['Epin']['e_pin'] = $random;
     $this->Epin->id =null;
     $this->Epin->save($this->data); 
   }   

      $this->Session->setFlash("Epin has been added");
      $this->Redirect(array('action'=>'admin_manage_epin')); 
   }
 }

epin.php(模型)

<?php class Epin extends appModel{
var $name ="Epin";
var $validate = array(
                      'e_pin'=>array(
                        'rule'=>'notEmpty',
                        'message'=>'Please type No of epin'
                      ));
  }
 ?>

我想我的控制器功能admin_create_epin

有问题

感谢

1 个答案:

答案 0 :(得分:0)

您应该检查实际字段是否为空 - 因为提交表单仍然会有一个数组:

if(!empty($this->data['Epin']['e_pin'])) {

for()循环中,您应该使用create()并且不要设置id

for($i=0;$i<$limit;$i++) {
    $this->Epin->create();
    $random = substr(number_format(time() * rand(),0,'',''),0,11)."<br/>";
    $this->data['Epin']['e_pin'] = $random;
    //...

您的redirect应为小写:

$this->redirect(...

很难理解你实际要问的是什么,但是如果你试图重新定位表单是否为空,那么重定向应该是另一个级别:

    }
    $this->Session->setFlash("Epin has been added");
    $this->Redirect(array('action'=>'admin_manage_epin')); 
}