3

私はcakephpに非常に慣れていないので、連絡先フォームを検証しようとしています.モデルのデータベーステーブルなしで検証が必要ですが、動作していません.以下に示すコードを使用しました

以下はコードです:ContactsController.php

<?php
class ContactsController extends AppController {


  var $uses='Contact';

  public function index() {
        // Placeholder for index. No actual action here, everything is submitted to the send function.
    }

    public function send() {
            $this->Contact->set($this->data);
            if($this->Contact->validates()) {
       echo "hiiii";
}
        }




}
----------------------------Model-----------------------
<?php
App::uses('AppModel', 'Model');

class ContactModel extends AppModel {

    var $name = 'Contact';
    var $useTable = false;

    var $validate = array(
        'name' => array(
            'rule' => 'notEmpty',
            'required' => true
        ),
        'email' => array(
            'rule' => 'email',
            'required' => true
        ),
        'message' => array(
            'rule' => 'notEmpty',
            'required' => true
        )
    );
}
-----------------------in view/Contacts/index.ctp-----------------------------
<?php
echo $this->Form->create('Contact', array('action' => 'Contacts/send'));
echo $this->Form->input('name');
echo $this->Form->input('email');
echo $this->Form->input('message',array('rows' => 3));
echo $this->Form->submit('Submit');
?>
4

3 に答える 3

1

少なくとも CakePHP2 では、フォームにも使用できるモデルを使用せずに検証する方法があります。

たとえば、パラメーターを検証する必要があり、パラメーターを必要とするアクションごとにモデルを作成しても意味がありませんでした。

だから、私はこれを使用しました:

  1. コントローラークラス宣言前

    App::uses('検証', 'ユーティリティ');

  2. $code パラメータを使用したアクションで

    function checkcode($code) { ... Validation::alphaNumeric($code); ... }

于 2012-11-13T13:29:14.247 に答える
0

この記事では、必要なすべての情報を提供します: http://www.dereuromark.de/2011/12/15/tools-plugin-part-2-contact-form/

特に _schema を使用して検証を構築し、簡単な方法でフォームを作成する方法。

于 2012-09-04T08:35:27.500 に答える
0

$this->Contact->save() は、関連付けられたモデルから Validation を呼び出す必要があります。

public function send() {
        $this->Contact->set($this->data);
        if($this->Contact->save()) {
          $this->Session->setFlash(__('Contact saved!'));
        }
}
于 2013-01-04T22:36:02.177 に答える