Skip to content

Commit 92a86f0

Browse files
committed
Fix Multilingual widget and extend ILanguageManager
1 parent 09cdeac commit 92a86f0

File tree

4 files changed

+47
-19
lines changed

4 files changed

+47
-19
lines changed

src/components/LanguageManager.php

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,26 @@ public function getLanguage()
104104
return $this->_language;
105105
}
106106

107+
public function getSlugMap()
108+
{
109+
$map = [];
110+
foreach ($this->languages as $language) {
111+
$map[$language->getId()] = $language->getSlug();
112+
}
113+
114+
return $map;
115+
}
116+
117+
public function getMap()
118+
{
119+
$map = [];
120+
foreach ($this->languages as $language) {
121+
$map[$language->getId()] = $language->getTitle();
122+
}
123+
124+
return $map;
125+
}
126+
107127
/**
108128
* @param ILanguage $language
109129
*/
@@ -130,4 +150,4 @@ public function setLanguage(ILanguage $language)
130150
Yii::$app->getResponse()->getCookies()->add($cookie);
131151
}
132152
}
133-
}
153+
}

src/interfaces/ILanguageManager.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,14 @@ public function getLanguage();
2828
* @param ILanguage $language
2929
*/
3030
public function setLanguage(ILanguage $language);
31-
}
31+
32+
/**
33+
* @return array
34+
*/
35+
public function getSlugMap();
36+
37+
/**
38+
* @return array
39+
*/
40+
public function getMap();
41+
}

src/widgets/Multilingual.php

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,27 +7,25 @@
77

88
use nullref\core\interfaces\ILanguageManager;
99
use Yii;
10+
use yii\base\Model;
1011
use yii\base\Widget;
1112

1213
class Multilingual extends Widget
1314
{
15+
/** @var \Closure */
1416
public $tab;
17+
/** @var Model */
1518
public $model;
16-
public $languages = null;
17-
18-
/**
19-
* @var MultilingualForm
20-
*/
19+
/** @var MultilingualForm */
2120
public $form;
2221

22+
/** @var ILanguageManager */
23+
private $languageManager;
24+
2325
public function init()
2426
{
2527
parent::init();
26-
if (!count($this->languages)) {
27-
/** @var ILanguageManager $languageManager */
28-
$languageManager = Yii::$app->get('languageManager');
29-
$this->languages = $languageManager->getLanguages();
30-
}
28+
$this->languageManager = Yii::$app->get('languageManager');
3129
}
3230

3331

@@ -50,7 +48,7 @@ public function run()
5048
'form' => $form,
5149
'tab' => $this->tab,
5250
'model' => $this->model,
53-
'languages' => $this->languages,
51+
'languageManager' => $this->languageManager,
5452
]);
5553
}
56-
}
54+
}

src/widgets/views/multilingual.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
* @var $form \nullref\core\widgets\MultilingualForm
55
* @var $model \yii\base\Model
66
* @var $tab Closure
7+
* @var $languageManager \nullref\core\interfaces\ILanguageManager
78
*/
8-
use app\helpers\Languages;
99

1010
?>
1111
<style>
@@ -22,21 +22,21 @@
2222
<div class="multilingual">
2323
<ul class="nav nav-tabs">
2424
<?php $first = true;
25-
foreach (Languages::getSlugMap() as $key => $lang): ?>
25+
foreach ($languageManager->getSlugMap() as $key => $lang): ?>
2626
<li class="<?= ($first) ? 'active' : '' ?>">
2727
<a data-toggle="tab" href="#<?= $lang ?>">
28-
<?= Yii::t('translation', Languages::getMap()[$key]) ?>
28+
<?= Yii::t('translation', $languageManager->getMap()[$key]) ?>
2929
</a>
3030
</li>
3131
<?php $first = false; endforeach ?>
3232
</ul>
3333
<div class="tab-content multilingual-tab-content" style="padding: 10px 5px">
3434
<?php $first = true;
35-
foreach (Languages::getSlugMap() as $key => $lang): ?>
35+
foreach ($languageManager->getSlugMap() as $key => $lang): ?>
3636
<div id="<?= $lang ?>" class="tab-pane <?= ($first) ? 'active' : '' ?>">
3737
<?php $form->language = $lang ?>
3838
<?= call_user_func($tab, $form, $model) ?>
3939
</div>
4040
<?php $first = false; endforeach ?>
4141
</div>
42-
</div>
42+
</div>

0 commit comments

Comments
 (0)