デフォルトの文字列正規化 ( Doctrine_Inflector::urlize()
「sluggifier」によって提供される) は私のプロジェクトには適していないため、独自のアルゴリズムを利用する必要があります。
次のようにスキーマを設定しました。
MyObject:
actAs:
Sluggable:
fields: [name]
builder: array('TextUtility', 'normalize')
columns:
name: string(255)
そして、別のフォーラムで見つけたいくつかの指示に従って、ユーティリティ クラスをプロジェクトの lib フォルダーに追加しました (ただし、アプリの lib フォルダーも試しました)。
<?php
//lib/TextUtility.class.php
class TextUtility {
public static function normalize($str) {
/* ... */
return $str;
}
}
?>
実行するsymfony doctrine:build --all
と、次のエラーが表示されます。
Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'array('TextUtility', 'normalize')' not found or invalid function name in /symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Listener/Sluggable.php on line 171
ユーティリティを間違った場所に置いているだけで、必要なときに読み込まれていないと思います。置く場所を間違えていませんか?Doctrine のドキュメントは、私が間違ったページを見ているだけでない限り、この件について言及していないようです。