Come controlli e vedi se un oggetto propel ha un record i18n?
-
05-07-2019 - |
Domanda
Sto usando symfony e propel e sto provando a invocare una cultura specifica su un oggetto e ad emettere alcuni campi di quell'oggetto sullo schermo in quella cultura specifica. Tuttavia, se il record del database mappato dell'oggetto non ha quei campi in quella cultura specifica, mi piacerebbe che l'impostazione predefinita fosse la cultura di base (in questo caso, en_US)
Lo sto facendo in questo modo:
$currentLesson = $currentLesson->getCurrentLessonsI18n($lessonCulture);
Ma quando output come questo
$currentLesson->getTitle();
Emette una stringa vuota se non ci sono record di cultura per essa. La mia domanda è: c'è un modo per rendere un oggetto predefinito a una cultura specifica se quello che ho specificato non è disponibile, o c'è un metodo per vedere se un oggetto specifico ha un record i18n di cultura?
qualcosa del genere:
if($currentLesson->cultureExists($lessonCulture) $currentLesson = $currentLesson->getCurrentLessonsI18n($lessonCulture);
o
sfConfig::setPropelDefaultCulture("en_US");
Soluzione
Dovrai sovrascrivere symfony stesso per renderlo predefinito in un'altra lingua. C'è una buona soluzione funzionante qui http: //www.codemassacre .com / 2008/03/10 / symfony-default-lingua-fallback /
Altri suggerimenti
Il record i18n
che ottieni da getTranslation ($ language)
può essere testato con isNew ()
, che ti dirà se Propel ha appena creato (true)
o se proviene dal database (false)
.