cakephp メッセージ機能 お久しぶり
進んでいなかったメッセージ機能すこし実装しました。
前回は、ログインしたユーザーの受信・送信フォルダに
指定のメッセージを表示させる記述を実装しました。
つまり、下記のデータを表示させる。
受信データ = 自分のIDがreceiverに入っているメッセージを表示
送信データ = 自分のIDがsenderに入っているメッセージを表示
更新したのが結構前のため、テーブル構成も載せておきます。
Message
・id
・sender (送信者のID)
・receiver (受信者のID)
・body (本文の内容)
になっています。
で!!!今回は、メッセージの送信機能を実装しました。
自分のID(ログインしている人のID)をFormでhiddenで送信してあげる処理。
public function add(){
$id = $this->Auth->user('id'); //不明。wwこれ消すとエラーでる。w
if ($this->request->is('post')){
if($this->Message->save($this->request->data)){
$this->Session->setFlash('送信が完了しました。');
return $this->redirect('index');
}
}
$this->set('userid', $this->Auth->user('id')); ←←ここが重要になります。
$this->set('message', $this->Message->findById($id));
}
赤字のところが重要になります。
あとは、公式ドキュメントの通りです。
赤字のところを説明します。
まずは、$this->Auth->user('id')でログイン情報が取得できます。
$this->setでviewに情報を渡す記述になります。
つまり、取得したログイン情報をviewに渡すという処理になります。
viewに渡すことで、viewのadd.ctpで情報を使うことができます。
add.ctpでは、hiddenでidをDBに格納しなければなりません。
<?php echo $this->Form->input('sender', array('type' => 'hidden', 'value' => $userid));?>
これで、送信機能は実装できました。
しかし、不明点が1つ。
$id = $this->Auth->user('id');
これ消すとなぜエラーでるの??
debugを2にしているから??
エラー出ても、機能自体はちゃんと動くので、問題ありませんが。
確実に不要なはずだが。。。。
次は、各ユーザーのページに行きメッセージを送信して、受信者のIDを格納して宛先を確定させるようにしたいとおもいます。
たぶん、ユーザーのページからgetでid取得して、hiddenで送信すればいけそう。