У меня проблема, когда я не могу получить конкретный перевод с моих объектов доктрины i18n. Если я вызову $object->getName();
Я получаю имя в текущей культуре, как и ожидалось. Однако, если я хочу получить конкретный перевод без переключения пользовательской культуры … $object->getName('fr');
В этом примере я по-прежнему получаю текущую культуру вместо французского. Это имя $object->getTranslation()->fr->name;
действительно работает. Что я делаю не так? Не $object->getName($culture);
правильный способ сделать это?
Вот важная часть моей схемы, если это полезно:
Object: actAs: Timestampable: ~ I18n: fields: [name, description] columns: name: { type: string(255), notnull: true } description: { type: string(1000) } user_id: { type: integer } relations: User: { class: sfGuardUser, local: user_id, foreign: id, type: one, foreignType: many, foreignAlias: Objects }
$this->Translation['fr']->getName()
альтернативно:
$translations = $this->getTranslations(); $translations['fr']->getName();
Эта почти такая же проблема, как и на ваш другой вопрос , используйте:
$object->Translation['fr']->name; $object->Translation['en']->name; $object->Translation['it']->name; // etc ...
Я цитирую комментарий, который я отправляю по другому вопросу:
->getName()
работает, если вы находитесь в объекте direclty, например$object->getName()
. Но если вы столкнетесь с отношением Translation, я никогда не использовал getter для получения значения.
Кстати, я не помню, что мы можем использовать этот $object->getName('fr');
с sf1.0.