2012-04-07 17 views
0

私は最近CakePHPの使用を開始しており、フォームをテストする唯一の目的のために作成した連絡先アプリケーションで動作するように検証することができませんでした。 $validateアレイをモーダルに設定すると、アスタリスクがフォームに表示されましたが、フォームを送信するときに検証メッセージが表示されません。ここに私のコードは次のとおりです。CakePHP検証でメッセージが表示されない

/app/View/Contacts/index.ctp

<h1>Contact Form</h1> 
<?php 
echo $this->Form->create('Contact'); 
echo $this->Form->input('name'); 
echo $this->Form->input('age'); 
echo $this->Form->end('Submit This Form!!!'); 
?> 

/app/Controller/ContactsController.php

<?php 
    class ContactsController extends AppController { 

    public $helpers = array('Html', 'Form'); 

    public function index() { 

    } 
} 
?> 

/アプリ/モデル/Contact.php

<?php 
class Contact extends AppModel { 
    var $useTable = false; 

    public $validate = array(
     'name' => array(
      'rule' => 'notEmpty', 
      'message' => 'Cannot leave this field blank.' 
     ), 
     'age' => array(
      'rule' => 'notEmpty', 
      'message' => 'Cannot leave this field blank.' 
     ) 
    ); 
} 
?> 
+0

コントローラ内から、$ this-> Contact-> validationErrorsプロパティを見てみましょう。 $ this-> Contact-> set($ this-> data)を呼び出してください。 (または - > save(...))を実行してください。そうしないと、毎回空の配列が返されます。 – Duncan

答えて

1

私たちには表示されていないコードで間違いがあります。 コントローラでフォームデータをどのように処理するか。 おそらくデータをモデルに設定するのを忘れています。

ここで、このチュートリアルで見てみましょう: http://www.dereuromark.de/2011/12/15/tools-plugin-part-2-contact-form/

を私の推測では、あなたの空のindexアクションを見て(!)。 あなたは何もしていません。どのように検証をトリガーすべきですか?

私は上記のリンクを参照してください。 set()およびvalidates()を使用してそのようなフォームを検証する方法を示します。 基本的にはつまるところ:

if ($this->request->is('post') || $this->request->is('put')) { 
    $this->ContactForm->set($this->request->data); 
    if ($this->ContactForm->validates()) { 
    } 
} 

PS:と本当にここ言葉ではないと私はあなたがあなたのコントローラに「ContactControllerを」名前の変更提案を意味することになっているものを意味does notの「連絡先」以来。また、URLを作成する/contact

+0

いいえ、「ContactsController」が正しいです。コントローラの名前は複数でなければなりません。 – JJJ

+0

私は慣習が何であるかについては言及していません(私はそれらのことをよく知っています)。私はまたあなたがそれをしなければならないとあなたに伝えませんでした。私は単にそれを行うことが賢明であることをあなたに示唆しました(ブログで概説されています)が、まだどちらかの方法で関連情報が示されていません。 – mark

+0

私はジュハナが私だと思っていたと思います。あなたが「まだあなたが関連情報を表示していないどちらかの方法」と言ったからです。 JuhanaはOPではない。実際に私が持っていたものすべてを見せてくれました。投稿したリンクを読んでいますが、昨日はCakeを使い始めましたが、コントローラで前進する前に検証できる印象を受けました。私は見て、それが動作するかどうかをお知らせします。あなたの助けをありがとう! – drewwyatt

関連する問題