1

CakePHP の連絡先フォームで非常に単純な検証を実行しようとしていますが、必要なことはすべて実行したと思いますが、検証が機能しません。これが私がしたことです:

  1. 次のようなモデルを作成しました。

    class Office extends AppModel
    {
      var $name = 'Office';
      var $useTable = false;
      public $validate = array('onderwerp' => 'notEmpty');
    }
    

    $validate( CakePHPオンラインマニュアルから他の多くの値も試しました)

  2. Config/bootstrap.php で、CakePHP に複数の「Office」を期待させないように、次のルールを作成しました。

    Inflector::rules('plural', array('rules' => array(), 
        'irregular' => array(), 
        'uninflected' => array('office')));
    
  3. OfficeController では、メソッドでこれを行いますcontact()

    $this->Office->set($this->request->data);
    if($this->Office->validates()){
      echo "code validates";
    } else {
      print_r($this->Office->validationErrors);
    }
    
  4. そして、私のOffice/contact.ctp見解では、(フォームの開始と終了などの他のコードの中で)次のコードがあります。

    $this->Form->input('onderwerp', array('label'=>false, 'size' => 60));

これで、「onderwerp」フィールドを空のままにしてフォームに入力しても、コードが実行されたときに実行されるべきコードが実行されます。

print_r($this->request->data)またはprint_r($this->Office)私が自分のonderwerpフィールドがそこにあり、それが空であることを確認したとき(または何かを入力したときに入力されたとき)。

今、public function validates()モデルに を追加し、echoそこに何かを追加すると、それが表示されます。したがって、CakePHP はモデルの場所を認識しており、コントローラー コードを実行します。return parent::validates();私も自分の関数を追加しようとしましvalidates()たが、これでも検証エラーやその他のエラーは発生しませんでした。デバッグ レベルが に設定されてい2ます。

私はこの干し草の山に針が欠けていると思います。見つけてくれてありがとう!

4

1 に答える 1

1

すべてのインフレータのものをドロップします。

Form->create() で適切なモデルを使用します

また

$this->Form->create(null)

また

$this->Form->create('Office');

また、私のアドバイスに従って、スキーマでテーブルのないモデルを使用すると、入力の作成と検証も強化されます。

于 2012-10-12T20:59:23.710 に答える