Archive

Archive for February, 2008

久々のバイト

February 4th, 2008 No comments

明日から2日間、友人の紹介でバイトに行きます
久しぶりすぎて緊張してきたぜ!><
失敗しないように頑張ろうと思います

Tags:

array_mapでコールバックにメソッドを指定する

February 2nd, 2008 No comments

データ投稿の部分を完成させるべく、テキストのエスケープ処理などを盛り込んだのですが
htmlspecialcharsやstrip_tagsに配列を投げてもそのままでは処理してくれません
さすがに配列を一個ずつ処理するのも面倒で、そういうときにarray_mapを使うと便利らしいのですが
そのコールバックにクラスのメソッドを指定する方法が分からなかったので調べました

PHPでコールバック関数にオブジェクトのメソッドを指定する

なるほど、配列でクラスとメソッドを指定するわけですな
最初のarray_map(“$this->func”, $var);が自分と同じ間違え方で驚きましたw

Tags:

Ajaxで自動更新(再描画)…改訂

February 2nd, 2008 2 comments

※divのid指定とメソッドのrender指定で説明が不十分な部分がありましたので改訂しました
どうやら
$opt['update'] = ‘*’

$this->render(‘*’)
*.ctp(divに更新して表示するview)
をコントローラーのメソッド名で全て統一しておくと幸せになれそうです(下記の場合はshow)
この自動更新とAjaxでのコメント投稿を組み合わせたのですが
統一していないと投稿時点でうまく更新されませんでした(自動更新の間隔でしか更新されない)
単純に書き方が悪いのかもしれませんが;

AjaxHelperのremoteTimerを使って一定時間ごとに表示領域を更新します
リアルタイムに画面が更新されるのでチャットなどに有効だと思います

・view
<?php
//自動更新の設定
//パラメーターをセットしてshowメソッドで受け取らせる
//例ではurlに含めて指定している
$opt = array(
‘url’ => ‘/examples/show/’.$parameter,
‘update’ => ‘show’,
‘frequency’ => ’5′);
//frequencyは更新間隔(秒)デフォルトで10(秒)
echo $ajax->remoteTimer($opt);
?>
<div id=”show”>
<?php echo $this->requestAction(‘/comments/show/’.$parameter, array(‘return’)); ?>
</div>

ここのdiv(show)に下記showメソッドを実行した結果(show.ctp)がfrequency秒間隔で描画されます
requestActionを使って更新前にも表示させておきます

・controller
function show($parameter = null)
{
//レイアウトをAjaxに
$this->layout(‘ajax’);
//表示させるデータのセットなど
$this->set(‘data’, $this->Example->read(null,$parameter));
//id=showにshow.ctpを再描画
$this->render(‘show’);
}

・show.ctp
データを表示させます
<?php foreach($data as $one): ?>
<?php echo $one; ?>
<?php endforeach; ?>
など

もちろん、上記だけでは単なる画面更新なので表示させるデータに変化がなければ常に同じ内容です
viewで$ajax->formあたりを使って動的にデータを送信→再描画出来るようにしないと面白くないでしょう

更新には他に、フォームの監視が出来るobserveFormメソッドなどもあります
検索などに使えそうなので今度やってみようと思います

#最近PHPは叩かれまくりだけど、CakePHPは面白いな~と思っている俺がいる

Tags: