2013-02-14 70 views
2

我想在table.For插入记录这个我在我的代码模型,视图和controller.Everything工作完美,但对于验证我的模型代码没有显示任何验证message.What我应该做的?我给下面的代码:蛋糕PHP的模型验证工作不

我的控制器代码:

public function send_money() 
     { 

     $this->layout='agent'; 
     $this->Agent->create(); 
     $this->Agent->set($this->data); 

      if(empty($this->data) == false) 
      { 
       //$this->Agent->saveAll($this->data['Agent'], array('validate' => 'only')); //This code Id New 
       $this->Agent->saveAll($this->data['Agent']); 
       $this->Session->setFlash('Information Added Successfully.'); 
       $this->redirect('send_money'); 

      } 
      else 
      { 
       $this->set('errors', $this->Agent->invalidFields());  
      } 

     } 

And My Model Code is : 



    App::uses('AppModel', 'Model'); 
    /** 
    * Admin Login Model 
    * 
    */ 
    class Agent extends AppModel 
    { 
     public $name='Agent'; 
     public $usetables='agents'; 

     public $validate = array(

     'contact' =>array(
      'rule' => 'notEmpty', // or: array('ruleName', 'param1', 'param2' ...) 
      'allowEmpty' => false, 
      'message' => 'Please Enter Contact No.' 
     ), 
     'name' =>array(
      'rule' => 'notEmpty', // or: array('ruleName', 'param1', 'param2' ...) 
      'allowEmpty' => false, 
      'message' => 'Please Enter Name.' 
     ), 

     'email_add' =>array(
      'rule' => 'email', // or: array('ruleName', 'param1', 'param2' ...) 
      'allowEmpty' => false, 
      'message' => 'Please Enter Valid Email.' 
     ), 
     ); 

    } 
+0

create('Agents'将其替换为create('Agent') – 2013-02-14 05:10:20

回答

0

变化:

$this->Form->create('Agents', 

$this->Form->create('Agent', 

由于型号名称是AgentAgents 在这里看到:Model Validation

0

使用这个在你的控制器:

if($this->Agent->validates($this->data)) { 

相反的:

if(empty($this->data) == false) 
+0

将此代码放置在控制器中后,将不会显示任何页面。错误消息如下:页面未正确重定向,Firefox检测到服务器如果删除$ this-> redirect('send_money');它的工作,但显示3警告,如:1.未定义的索引:代理[APP \ Controller \ AgentsController .PHP,线74] 2.array_keys()预计参数1是阵列,空给出[CORE \蛋糕\模型\ Model.php,线2035] – amit 2013-02-14 05:39:32

+0

而第三警告是参数1传递给散列::数字()必须是一个给定为null的数组,在第2035行的C:\ wamp \ www \ astha \ lib \ Cake \ Model \ Model.php中调用并定义了[CORE \ Cake \ Utility \ Hash.php,第618行]信息自动显示。我该怎么办? – amit 2013-02-14 05:45:01

+0

你有$ uses = array('Agent');作为你的控制器的成员? – 2013-02-14 06:56:22

0

试试这个:

public function send_money() 
    { 

    $this->layout='agent'; 
    $this->Agent->create(); 
    $this->Agent->set($this->data); 

     if($this->Agent->saveAll($this->data['Agent'])) { 
      $this->Session->setFlash('Information Added Successfully.'); 
      $this->redirect('send_money'); 
     } 
     else { 
      $this->set('errors', $this->Agent->invalidFields());  
     } 

    } 

注:记录错误验证使用该debug($this->Agent->validationErrors);