ビューの作成
1−1 入力ページの作成
「app/View/Contact/index.ctp」というファイルを作成
<?php $this->assign('title','お問い合わせ'); ?>
<?php $this->Html->css('post',null,array('inline' => false)); ?>
<?php echo $this->Form->create(false,array('type' => 'post','action' => '')); ?>
<div class="container">
<div class="well1">
<div class="col-12">
<div class="panel panel-danger">
<div class="panel-heading">お問い合わせ</div>
<div class="panel-body">
<div class="control-group">
<p>お気軽にお問い合わせください</p>
<br />
<hr>
</div>
<div class="control-group">
<label class="control-label">※名前</label>
<div class="controls">
<?php echo $this->Form->input('name',array('type' => 'text','label' => false)); ?><?php echo $this->Form->error('ContactModel.name'); ?>
</div>
</div>
<div class="control-group">
<label class="control-label">※Email</label>
<div class="controls">
<?php echo $this->Form->input('email',array('type' => 'text','label' => false)); ?><?php echo $this->Form->error('ContactModel.email'); ?>
</div>
</div>
<div class="col-12 col-lg-12 col-sm-12">
<div class="control-group">
<div class="controls">
<hr />
<label class="control-label">※ご用件</label>
<?php echo $this->Form->input('area',array('type' => 'select','multiple' => 'checkbox','options' => $area,'label' => false)); ?>
<?php echo $this->Form->error('ContactModel.area'); ?>
</label>
<hr />
</div>
</div>
</div>
<div class="control-group">
<div class="controls">
<hr />
<label class="control-label">※問い合わせ</label>
<hr />
<?php echo $this->Form->textarea('text',array('rows' => '10','cols' => '30')); ?> <?php echo $this->Form->error('ContactModel.text'); ?>
</label>
</div>
</div>
<div class="control-group">
<div class="controls">
<?php echo $this->Form->submit('確認',array('name' => 'enter','class' =>' btn btn-danger')); ?>
</div>
</div>
</div>
</div>
<?php echo $this->Form->end(); ?>
</div>
</div>
</div>
1−2 確認ページの作成
「app/View/Contact/result.ctp」というファイルを作成
<?php $this->assign('title','問い合わせ'); ?>
<?php echo $this->Form->create(false,array('type' => 'post','action' => '')); ?>
<div class="container">
<div class="col-12">
<div class="panel panel-danger">
<div class="panel-heading">お問い合わせ</div>
<div class="panel-body">
<div class="control-group">
<label class="control-label">名前</label>
<div class="controls">
<?php echo $this->data['name']; ?>
</div>
</div>
<div class="control-group">
<hr />
<label class="control-label">Email</label>
<div class="controls">
<?php echo $this->data['email']; ?>
</div>
</div>
<div class="control-group">
<hr />
<label class="control-label">ご用件</label>
<div class="controls">
<?php
foreach($this->data['area'] as $k => $v){
$area_tmp[$k] = $area[$v];
}
?>
<?php echo implode(',',$area_tmp); ?>
</div>
</div>
<div class="control-group">
<hr />
<label class="control-label">内容</label>
<div class="controls">
<?php echo nl2br($this->data['text']); ?>
</div>
</div>
<div class="control-group">
<div class="controls">
<hr />
<?php echo $this->Form->submit('送信する',array('name' => 'send','class' =>' btn btn-danger')); ?>
</div>
</div>
<div class="control-group">
<div class="controls">
<hr />
<?php echo $this->Form->submit('戻る',array('name' => 'back','class' =>' btn')); ?>
</div>
</div>
</div>
</div>
<?php echo $this->Form->end(); ?>
</div>
</div>
1−3 .完了ページの作成
「app/View/Contact/finish.ctp」というファイルを作成
<?php $this->assign('title',' お問い合わせ完了画面'); ?>
<?php echo $this->Form->create(false,array('type' => 'post','action' => '')); ?>
<div class="container">
<div class="col-12">
<div class="panel panel-danger">
<div class="panel-heading"> 送信完了しました。</div>
<div class="panel-body">
<?php echo $this->Form->submit('戻る',array('name' => 'back','class' =>' btn btn-danger')); ?>
</div>
</div>
<?php echo $this->Form->end(); ?>
</div>
コントローラーの作成
「app/Controller/ContactController.php」というファイルを作成
<?php
class ContactController extends AppController{
//PostsModelというモデルを使用(入力チェック用)
public $uses = 'ContactModel';
//Emailというコンポーネントを使用(メール送信用)
public $components = array('Email');
function index(){
//モデルから以下の配列を取得し、ビューに出力
// $this->set('sex',$this->PostsModel->sex);
$this->set('area',$this->ContactModel->area);
//「確認する」が押されたとき
if(isset($this->params['data']['enter'])){
//モデルに情報をセット
$this->ContactModel->set($this->data);
//入力チェック
if($this->ContactModel->validates()){
//セッションに情報を保存
$this->Session->write('data',$this->data);
//ビューを変更
$this->render('result');
}
//「送信する」が押されたとき
}elseif(isset($this->params['data']['send'])){
//セッションの情報を取得
$data = $this->Session->read('data');
$this->set('data',$data);
//メール送信
$this->sendmail($data);
//セッションの情報を削除
$this->Session->delete('data');
$this->render('finish');
//「戻る」が押されたとき
}elseif(isset($this->params['data']['back'])){
$this->data = $this->Session->read('data');
$this->render();
}
}
//メール送信関数
function sendmail($data){
$this->Email->sendAs = 'text';
$this->Email->to = $data['email'];
$this->Email->bcc = array('test@example.com');
$this->Email->subject = 'HPからのお問い合わせ';
$this->Email->from = 'test@example.com';
$this->Email->template = 'contact';
$this->Email->send();
}
}
モデルの作成
「app/Model/ContactModel.php」というファイルを作成
<?php
class ContactModel extends AppModel{
//テータベースのテーブルを使わない
public $useTable = false;
// public $sex = array(
// 'male' => '男性',
// 'fmale' => '女性'
// );
public $area = array(
'area1' => '求人',
'area2' => '予約',
'area3' => 'その他',
);
//入力チェック
public $validate = array(
'name' => array(
'maxLength' => array(
'rule' => array('maxLength','50'),
'allowEmpty' => false,
'message' => '名前は50文字以内で入力してください'
),
'notEmpty' => array(
'rule' => array('notEmpty'),
'message' => '名前を入力してください'
)
),
'area' => array(
'rule' => array('multiple', array('min' => 1)),
'required' => true,
'message' => 'ご用件を選択してください'
),
'email' => array(
'email' => array(
'rule' => array('email',true),
'message' => 'メールアドレスを正しく入力してください'
),
'notEmtpy' => array(
'rule' => array('notEmpty'),
'message' => 'メールアドレスを入力してください'
)
),
// 'sex' => array(
// 'rule' => array('notEmpty'),
// 'message' => '性別を選択してください'
// ),
'area' => array(
'rule' => array('multiple', array('min' => 1)),
'required' => true,
'message' => 'ご用件を選択してください'
),
'text' => array(
'maxLength' => array(
'rule' => array('maxLength','500'),
'allowEmpty' => false,
'message' => '内容は500文字以内で入力してください'
),
'notEmpty' => array(
'rule' => array('notEmpty'),
'message' => '内容を入力してください'
)
)
);
}
メールテンプレートの作成
「app/Model/ContactModel.php」というファイルを作成
以下の内容を送信しました。
名前:<?php echo $data['name'] ?>
メールアドレス:<?php echo $data['email'] ?>
ご用件:<?php foreach($data['area'] as $k => $v){$area_tmp[$k] = $area[$v];} echo implode(',',$area_tmp); ?>
内容:
<?php echo $data['text'] ?>
ーーーーーーーーーーーーーーーーーーーー