AjaxメールフォームのModel
データベースにテーブルを新設する
メールフォームから送信された問い合わせ内容を保存するテーブルを定義します。
foundation5とCakephpで作るAjaxメールフォーム 準備編の続きになります。全体像は以下の構成になっていて、本エントリーはModel編です。
以下テーブルを定義するSQLです。
CREATE TABLE IF NOT EXISTS `contacts` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(256) COLLATE utf8_unicode_ci NOT NULL, `email` varchar(256) COLLATE utf8_unicode_ci NOT NULL, `option` int(3) NOT NULL, `body` text COLLATE utf8_unicode_ci NOT NULL, `ip_address` varchar(256) COLLATE utf8_unicode_ci NOT NULL, `created` varchar(256) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
Modelの定義
contactsテーブルを新設しましたので、CakephpにContactモデルを定義します。validationを扱えるAjaxメールフォームとするためモデルにvalidateを定義しています。
以下の内容で、
app\Model\Contact.php
として保存します。
<?php class Contact extends AppModel { public $name = 'Contact'; public $validate = array( 'title' => array( 'notEmpty' => array( 'rule' => 'notEmpty', 'message' => '件名を記入してください。', 'last' => true ), 'maxLength' => array( 'rule' => array('maxLength', '50'), 'message' => '件名は50文字以内で入力してください。' ), ), 'option'=>array( 'rule' => 'notEmpty', 'message'=>'問い合わせの種類を選択してください。' ), 'email' => array( 'notEmpty' => array( 'rule' => 'notEmpty', 'message' => 'メールアドレスを記入してください。', 'last' => true ), 'maxLength' => array( 'rule' => array('maxLength', '5000'), 'message' => 'メールアドレスは500文字以内で入力してください。' ), 'isValid' => array( 'rule' => 'email', 'required' => true, 'message' => '有効なメールアドレスを記入してください。' ), ), 'body' => array( 'notEmpty' => array( 'rule' => 'notEmpty', 'message' => '本文を記入してください。', 'last' => true ), 'maxLength' => array( 'rule' => array('maxLength', '3000'), 'message' => '本文は3000文字以内で入力してください。' ), ), ); } ?>
バリデートするのは、title, option, email, そして問い合わせ本文となるbodyの4つとしました。
Model編は以上です。Controller編に続く