propelオブジェクトにi18nレコードがあるかどうかをどのように確認しますか?
-
05-07-2019 - |
質問
symfonyとpropelを使用しており、オブジェクトの特定のカルチャを呼び出して、その特定のカルチャの画面にそのオブジェクトのいくつかのフィールドを出力しようとしています。ただし、オブジェクトのマップされたデータベースレコードにその特定のカルチャにこれらのフィールドがない場合は、デフォルトで基本カルチャ(この場合はen_US)にしたいです
このようにしています:
$currentLesson = $currentLesson->getCurrentLessonsI18n($lessonCulture);
しかし、このような出力をするとき
$currentLesson->getTitle();
カルチャレコードがない場合は、空の文字列を出力します。私の質問は、指定したものが利用できない場合、オブジェクトを特定のカルチャにデフォルトにする方法はありますか、または特定のオブジェクトにカルチャi18nレコードがあるかどうかを確認する方法はありますか?
次のようなもの:
if($currentLesson->cultureExists($lessonCulture) $currentLesson = $currentLesson->getCurrentLessonsI18n($lessonCulture);
または
sfConfig::setPropelDefaultCulture("en_US");
解決
symfony自体を上書きして、デフォルトで別の言語にする必要があります。 ここに良い解決策があります http://www.codemassacrecre .com / 2008/03/10 / symfony-default-language-fallback /
他のヒント
getTranslation($ language)
から返される i18n
レコードは、 isNew()
でテストできます。これにより、Propel (true)
を作成したばかりか、データベース(false)
からのものである場合。
所属していません StackOverflow