2011-07-08 11 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が呼び出されません。

あなたがこれを行う前に、次へ

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

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

だから、基本的には、変更:

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

をあなたはこれを呼び出すことで、データが検証することを確認する必要があります

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

はありません。私はその部分を削除しますが、それと同じ問題です。 (私のビューにはde div = 'false'があり、正常に動作します) –

+0

その場合は、質問を編集してコントローラのコードを含めることができますか? –

+0

@Rafael私の更新答えを見てください。 –

2


デバッグ(の$ this - > Safpercent->によりvalidationErrors)

を試してみて、それがすべてのエラーを示しているかどうかを確認します。

+0

私はそれを試して、最初の投稿にエラーを表示する2つの "黄色いケーキ"エラーを表示します。 –

+0

関数の前に 'var $ uses = array( 'Safpercent');を追加してください。 – shahalpk

+0

そのエラーは、私が他のコントローラにdebug($ this-> Safpercent-> validationErrors)を置いたためです。私はとても愚かで、正しいコントローラを試してみる。 –

関連する問題