データベースからテキストデータを引っ張り出してきて、ビューで表示させるには
このように書くことが多いと思います。
・コントローラの場合
public function index()
{
$this->set('items', $this->Item->find('all'));
}
・ビューの場合
<?php foreach ($items as $item): ?>
<?php echo $item['Item']['comment']; ?>
<?php endforeach; ?>
この場合'comment’というフィールドのデータが表示されるわけですが
データ中の改行が反映されないという問題点があります。
これを解決するにはモデルに
afterfind()というコールバック関数を定義します。
public function afterFind($results, $primary = false)
{
$num_record = count($results);
for($i = 0; $i< $num_record; $i++){
$results[$i]['Item']['comment'] = str_replace("\n", "</br>", $results[$i]['Item']['comment']);
}
return $results;
}
afterfind()はfindの後で勝手に呼び出される関数で、
findした結果を配列$reslutsで受け取ります。
各レコードの"comment"フィールドの値にたいして、
改行文字を</br>で置き換える処理を行えば最終的に表示される内容を
改行することが出来ます。