2011-12-29 11 views
1

私はこの1時間ほど前からこれに苦労してきました。CakePHPの検証は常にtrue

モデル

class User extends AppModel { 
public $name = 'User'; 
public $validate = array(
    'email' => array(
     'valid' => array(
      'rule' => 'email', 
      'message' => 'The email is not valid' 
     ), 
     'required' => array(
      'rule' => 'notEmpty', 
      'message' => 'Please enter an email' 
     ) 
    ) 
); 
} 

コントローラ

class UserController extends AppController { 

var $uses = array('User'); 

function index(){ 
    $users = $this->User->find('all'); 
    $this->set(compact('users')); 
} 

public function add() { 
    $this->set('title_for_layout', 'Add new user'); 

    if(isset($this->data) && !empty($this->data)) { 
     $this->User->set($this->data); 
     $this->log($this->User->invalidFields(), "debug"); 

     if($this->User->validates()){ 
      if ($this->User->save($this->data)) { 

       $this->Session->setFlash("Added " . $this->data['User']['name']); 
       $this->redirect('index'); 
      } 
     } else { 
      $this->Session->setFlash('There are errors with your form submit, please see below.'); 
     } 

    } 
} 

}

ビュー

<?php 
    echo $this->Form->create('User'); 
    echo $this->Form->input('name', array('label' => 'Name')); 
    echo "<div class='clear'></div>"; 
    echo $this->Form->input('email', array('label' => 'Email')); 
    echo "<div class='clear'></div>"; 
    echo $this->Form->button('Reset', array('type' => 'reset')); 
    echo $this->Form->button('Add Useer', array('type' => 'submit')); 
    echo $this->Form->end(); 
?> 

しかし、私は電子メールの無効なフィールドを取得することはありませんか?私は何か目障りに見逃したことがありますか?

それはどんな違いをした場合、これはイムはEDITので、それがアプリで/が、アプリ/プラグインに直接座るdoes notの

おかげ

を開発するプラグインです:だから私はこれで苦労してきました今はまだ、そしてまだ喜びはありません。 (var_dump($ this-> User)を使って)モデルの詳細を出力すると、[validate]配列は空です。たとえば:

[validate] => Array 
    (
    ) 

[validationErrors] => Array 
    (
    ) 

イムは、私は私の$の検証配列を宣言しているにもかかわらず、これは問題が何であるかである仮定、その何とか上書きされるの?誰もがこれを前に来る?どんな解決策ですか?

+0

シンプルさにはいくつかの欠陥がありますが、それ以外は大丈夫です。すべてのサブグラフで常に "last" => trueを使用します。ああ、そしてcreate()が見つからない場合は – mark

+0

'last' => trueはあなたが望むなら使用するものです - それは必ずしも必要ではありません - 時には、一度に1つではなく、 。 – Dave

+0

どのバージョンのcakephpを使用していますか? – Dave

答えて

0

くそー!とても簡単。私はhttp://book.cakephp.org/1.3/en/view/1114/Plugin-Modelsで適切に料理の本を読めば、それはあなたがあなたのプラグイン内のモデルを参照する必要がある場合は、ドットで区切られたモデル名を持つプラグイン名を含める必要があり

ことを私に言っただろう。したがって

..

var $uses = array('Plugin.User'); 

作品が...これは他の誰かがお役に立てば幸い!

0
public $validate = array(
    'email' => array(
     'valid' => array(
      'rule' => array('email'), 
      'message' => 'The email is not valid' 
     ), 
     'required' => array(
      'rule' => array('notEmpty'), 
      'message' => 'Please enter an email', 
      'allowEmpty' => false 
     ) 
    ) 
); 

ルールを配列として追加し、必要な検証で 'allowEmpty'キーをfalseに設定してみてください。

+0

私はこれを試しました、喜びはありません。しかし、試みに感謝します。私はそのプラグインと、デフォルトのAppModelクラスを拡張しているという事実とは何かを感じています。 –

+0

私はそれがプラグインxDだった部分を逃した – elboletaire

関連する問題