0

私は乱数を生成したコードを作成し、すべての番号をデータベースに保存しました(コードのその部分は機能しています)が、ビューページで何も入力せずに検証に問題があり、この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 に問題があると思います

ありがとう

4

1 に答える 1

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

実際に何を求めているのかを理解するのは非常に困難ですが、フォームが空の状態で送信された場合にリダイレクトしようとしている場合は、リダイレクトをもう 1 つレベルアウトする必要があります。

    }
    $this->Session->setFlash("Epin has been added");
    $this->Redirect(array('action'=>'admin_manage_epin')); 
}
于 2012-05-01T13:14:31.780 に答える