久々のバイト
明日から2日間、友人の紹介でバイトに行きます
久しぶりすぎて緊張してきたぜ!><
失敗しないように頑張ろうと思います
データ投稿の部分を完成させるべく、テキストのエスケープ処理などを盛り込んだのですが
htmlspecialcharsやstrip_tagsに配列を投げてもそのままでは処理してくれません
さすがに配列を一個ずつ処理するのも面倒で、そういうときにarray_mapを使うと便利らしいのですが
そのコールバックにクラスのメソッドを指定する方法が分からなかったので調べました
なるほど、配列でクラスとメソッドを指定するわけですな
最初のarray_map(“$this->func”, $var);が自分と同じ間違え方で驚きましたw
※divのid指定とメソッドのrender指定で説明が不十分な部分がありましたので改訂しました
どうやら
$opt['update'] = ‘*’
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は面白いな~と思っている俺がいる