/** * Constructs a new localize view * @param $meta * @param $id * @param $action * @param $field * @return null */ public function __construct(ModelMeta $meta, $data, $action = null) { parent::__construct(self::TEMPLATE); $localizedModel = $meta->getLocalizedModel(); $localizedFields = $meta->getLocalizedFields(); $currentLocale = LocalizeController::getLocale(); $allLocales = I18n::getInstance()->getAllLocales(); unset($allLocales[$currentLocale]); $locales = array(); foreach ($allLocales as $locale) { $locale = $locale->getCode(); $localizedId = $localizedModel->getLocalizedId($data->id, $locale); if ($localizedId === null) { $locales[$locale] = null; continue; } $localesData = clone $data; $localizedData = $localizedModel->findById($localizedId); foreach ($localizedFields as $fieldName => $localizedField) { $localesData->{$fieldName} = $localizedData->{$fieldName}; } $localesData->localizedLabel = $meta->formatData($localesData); $locales[$locale] = $localesData; } $this->set('locales', $locales); $this->set('action', $action); }