1

デフォルトの文字列正規化 ( 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 のドキュメントは、私が間違ったページを見ているだけでない限り、この件について言及していないようです。

4

1 に答える 1

2

YAML の配列は別の方法で定義されます。

MyObject:
  actAs:
    Sluggable:
      builder: [TextUtility, normalize]
于 2010-12-02T06:36:42.480 に答える