プログラミング奮闘記録

プラグラマーへ奮闘。PHP・Cakephp・JavaScript・isoアプリのコード勉強ブログです。その他の言語やツールなども使用します。

ドロップダウンのグローバルメニュー(cssのみ)

メモだす!!!

cssだけで下記で実装できました。

 

 

ri-mode.com

 

コメントアウト部分を変更することで、実装できます。

 

あるがとうございます。

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で送信すればいけそう。

 

cakephp 整理します。キーワード検索

検索を前にいろいろ試したり、実装してましたが自分でまとめてたはずが、

まとまっておらず。。ww

 

再度まとめ。ww

 

キーワード検索(一部一致)

 

>>>index.ctp

<!--検索フォーム(一部一致)-->
<?php echo $this->Form->create('post', array('action'=>'find')); ?>
<fieldset>
<legend>検索</legend>
<?php echo $this->Form->input('title', array('label' => 'タイトル', 'class' => 'span12', 'placeholder' => 'タイトルを検索')); ?>
</fieldset>
<?php echo $this->Form->end('検索'); ?>

 

 

>>>Model.php

public $actsAs = array('Search.Searchable');
public $filterArgs = array(
// 例
'title' => array('type' => 'like'),
'comment' => array('type' => 'like'),
);

 

 

>>>Controller.php

public $components = array('Search.Prg');
public $presetVars = true;

 

public function find(){
$this->Post->recursive = 0;
$this->Prg->commonProcess();
$this->paginate = array(
'conditions' => $this->Post->parseCriteria($this->passedArgs),
);
$this->set('posts', $this->paginate());
}

 

 

 

これで実装可能。