0

私は最近 CakePHP を使い始めたばかりで、フォームのテストのみを目的として作成した連絡先アプリで検証を行うことができませんでした。モーダルで配列を設定する$validateと、フォームにアスタリスクが表示されますが、フォームを送信しても検証メッセージが表示されません。これが私のコードです:

/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() {

    }
}
?>

/app/Model/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.'
        )
    );
}
?>
4

1 に答える 1

1

あなたの間違いは、あなたが私たちに見せてくれなかったコードである可能性があります: How you process your form data in the controller. モデルにデータを設定するのを忘れた可能性があります。

こちらのチュートリアルをご覧ください: http://www.dereuromark.de/2011/12/15/tools-plugin-part-2-contact-form/

あなたの空の(!)インデックスアクションを見ていると思います。あなたは何もしていません。それはどのように検証をトリガーする必要がありますか?

上記リンクを参考にさせていただきました。set() と validates() を使用してそのようなフォームを検証する方法を示します。基本的には、次のように要約されます。

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

PS: "連絡先" は実際にはここでは単語ではなく、本来の意味を意味するものではないため、コントローラーの名前を "ContactController" に変更することをお勧めします。URLも作成します/contact

于 2012-04-07T17:20:30.533 に答える