public function indexAction() { $model = new Translate(); if ($this->request->isPost()) { $post = $this->request->getPost(); if (!empty($post)) { foreach ($post as $key => $value) { $key = str_replace('_', ' ', $key); // При отправке формы POST-запросом, все пробелы заменяются на "_". Меняем обратно. $phrase = $model->findByPhraseAndLang($key); if ($phrase) { $phrase->setTranslation($value); $phrase->update(); } else { $phraseNew = new Translate(); $phraseNew->setPhrase($key); $phraseNew->setLang(LANG); $phraseNew->setTranslation($value); $phraseNew->create(); } } } $this->flash->success('Данные обновлены'); $lang = LANG; $key = HOST_HASH . md5("Translate::findByLang({$lang})"); $this->cache->delete($key); $this->redirect('/cms/translate?lang=' . LANG); } $scanner = new Scanner(); $phrases = $scanner->search(); $this->view->phrases = $phrases; $this->view->model = $model; }
public function indexAction() { $model = new Translate(); if ($this->request->isPost()) { $post = $this->request->getPost(); if (!empty($post)) { foreach ($post as $key => $value) { $key = str_replace('_', ' ', $key); // При отправке формы POST-запросом, все пробелы заменяются на "_". Меняем обратно. $phrase = $model->findByPhraseAndLang($key); if ($phrase) { $phrase->setTranslation($value); $phrase->update(); } else { $phraseNew = new Translate(); $phraseNew->setPhrase($key); $phraseNew->setLang(LANG); $phraseNew->setTranslation($value); $phraseNew->create(); } } } CmsCache::getInstance()->save('translates', Translate::buildCmsTranslatesCache()); $this->flash->success($this->helper->at('Saved has been successful')); $lang = LANG; $key = HOST_HASH . md5("Translate::findByLang({$lang})"); $this->cache->delete($key); return $this->redirect($this->url->get() . 'cms/translate?lang=' . LANG); } $scanner = new Scanner(); $phrases = $scanner->search(); $this->view->phrases = $phrases; $this->view->model = $model; }
public function __construct(Dispatcher $dispatcher) { $cmsCache = new CmsCache(); $languages = $cmsCache->get('languages'); $defaultLangArray = array_values(array_slice($languages, 0, 1)); $defaultLang = $defaultLangArray[0]; $request = $this->getDI()->get('request'); $queryLang = $request->getQuery('lang'); if (!$queryLang) { $langParam = $dispatcher->getParam('lang'); } else { $langParam = $queryLang; } if (!$langParam) { $langParam = $defaultLang['iso']; } foreach ($languages as $language) { if ($langParam == $language['iso']) { define('LANG', $language['iso']); define('LANG_URL', '/' . $language['url']); } } if (!defined('LANG')) { define('LANG', $defaultLang['iso']); \Application\Mvc\Model\Model::$lang = $defaultLang['iso']; } if (!defined('LANG_URL')) { define('LANG_URL', $defaultLang['url']); } $translations = \Cms\Model\Translate::findCachedByLangInArray(LANG); $this->getDI()->set('translate', new \Phalcon\Translate\Adapter\NativeArray(['content' => $translations])); }
public static function buildCmsTranslatesCache() { $save = []; $languages = Language::find(); foreach ($languages as $lang) { $save[$lang->getIso()] = ["" => ""]; } $entries = Translate::find(); foreach ($entries as $el) { $save[$el->getLang()][$el->getPhrase()] = $el->getTranslation(); } return $save; }
public function afterDelete() { CmsCache::getInstance()->save('languages', $this->buildCmsLanguagesCache()); CmsCache::getInstance()->save('translates', Translate::buildCmsTranslatesCache()); }