symfonyのヘルパーを直接編集するとバージョンアップ時などに困るので、オートロード領域にオリジナルのヘルパーを作成して使用する。
(手順) ファイル名がHelper.phpで終わるPHPファイルを作成し、それをlibディレクトリ配下のhelperと命名されたサブディレクトリに配置する。
★設置可能な場所と有効範囲
/lib/helper/{Name}Helper.php …プロジェクト全体で使用可能
/myapp/lib/helper/{Name}Helper.php …アプリケーション内のみで使用可能
/mymodule/lib/helper/{Name}Helper.php …モジュール内でのみ使用可能
※使用するテンプレート内では宣言が必要
<?php use_helper('Name') ?>
試しにmbTruncateHelper.phpを作ってみた。
//symfonyにtruncate_textヘルパーがあるので、継承した方が良いかも…
function mb_truncate_text($text, $length = 30, $truncate_string = "...", $truncate_lastspace = false)
{
mb_internal_encoding("UTF-8");
if ($text == "")
{
return "";
}
if (mb_strlen($text) > $length)
{
$truncate_text = mb_substr($text, 0, $length - strlen($truncate_string));
if($truncate_lastspace)
{
$truncate_text = mb_preg_replace("/\s+?(\S+)?$/", "", $truncate_text);
}
return $truncate_text.$truncate_string;
}
else
{
return $text;
}
}
これを/lib/helper/の下に設置し、テンプレート内にと宣言すると使用できることを確認。
※使用例 <?php echo mb_truncate_text($objProduct->getNote(),80,'・・・'); ?>

