2011-07-08 42 views
-1

我在模型中有我的验证规则,并且一切正常。它像我想要的那样进行验证,但是在编辑操作中,虽然没有验证,但不要在文本框下显示红色错误标记。编辑操作中的错误消息不会出现

任何提示?

谢谢。

标准守则(型号名称是Safpercent):

var $validate = array(
     'sequencia' => array(
      'must_be_numeric' => array(
       'rule' => 'Numeric', 
       'message' => 'Number Field: insert only numbers.' 
      ) 
     ), 
    ); 

查看文本框:

echo $form->input('Safpercent.sequence', array('id' => 'sequence', 'options' => $criteria, 'label' => false, 'div' => false, 'style' => 'width: 300px')); 

控制器代码:

function edit($id = null) { 
       $criteria = $this->Safpercent->Safrequirement->find('list', array('fields' => array('Safrequirement.sequencia', 'Safrequirement.descricao'), 'conditions' => array('Safrequirement.tipo' => 'ILC'))); 
       $this->set('criteria', $criteria); 
       if (!$id && empty($this->data)) { 
        $this->Session->setFlash(RecordNotValid, 'flash_failure'); 
        $this->redirect(array('controller' => 'safpercents', 'action'=>'index')); 
     } 
     if (!empty($this->data)) { 
        $sequencia = $this->data['Safpercent']['sequencia']; 
        if($this->data['Safpercent']['tipo'] == ''){$tipo = 'ILC';}else{$tipo = $this->data['Safpercent']['tipo'];} 
        $encontro = $this->Safpercent->Safrequirement->find('all', array('conditions' => array('sequencia' => $sequencia, 'tipo' => $tipo))); 
      if($encontro <> array()){ 
         if ($this->Safpercent->save($this->data)) { 
          $this->Session->setFlash(RecordSaved, 'flash_success'); 
          $this->redirect(array('controller' => 'safpercents', 'action'=>'index')); 
         }else{ 
          $this->Session->setFlash(RecordNotSaved, 'flash_failure'); 
         } 
        }else{ 
         $this->Session->setFlash('A Sequência que tentou Inserir não existe. Verifique a tabela de novo, por favor.'); 
        } 
       } 
     if (empty($this->data)) { 
        $this->data = $this->Safpercent->read(null, $id); 
        $this->set('id', $id); 
     } 
       $this->set('cod_percent',$this->Safpercent->read(null, $id)); 
    } 

(葡萄牙变量和文本在某些情况下, )

回答

1

我明白了。在您的控制器中,您正在使用您正在验证的sequencia字段,但在此阶段未进行任何验证。它传递一个非数字到find查询,然后返回一个错误或者什么,并且save永远不会被调用?

你这样做之前:

$sequencia = $this->data['Safpercent']['sequencia']; 

您应该检查数据验证,通过调用这个:

$this->ModelName->set($this->data); 
if ($this->ModelName->validates()) { 
    ... //do your business here 

所以基本上,变动:

if (!empty($this->data)) { 

到:

$this->Safpercent->set($this->data); 
if (!empty($this->data) && $this->Safpercent->validates()) { 
+0

这不是。我删除那部分,但仍然是同样的问题。 (我的添加视图有de div ='false',它工作得很好。) –

+0

在这种情况下,您可以编辑问题以包含来自控制器的代码? –

+0

@Rafael看到我更新的答案。 –

2

尝试

调试($这个 - > Safpercent-> validationErrors)

,看看它是否显示任何错误。

+0

我试过了,它显示两个“黄色蛋糕”的错误,将把错误放在第一篇文章。 –

+0

在函数前面添加'var $ uses = array('Safpercent');'在控制器的顶部。 – shahalpk

+0

那个错误,是因为我把调试($ this-> Safpercent-> validationErrors)放在其他控制器上。我很愚蠢,会尝试使用正确的控制器。 –

相关问题