我正在尝试在Yii2
中获取多语言小部件like this我审核了this
但我陷入了构建选择器小部件的最后一部分。任何人都可以在Yii2中逐步列出过程吗?
下面是我的语言选择器代码,它不返回任何内容并打破现在的布局
<?php //languageselector.php
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
?>
<div id="language-select">
<?php
if(sizeof($languages) < 4) {
// Render options as links
$lastElement = end($languages);
foreach($languages as $key=>$lang) {
if($key != $currentLang) {
echo $owners->createMultilanguageReturnUrl($key);
echo Html::a(
$lang,
$owners->createMultilanguageReturnUrl($key));
} else echo '<b>'.$lang.'</b>';
if($lang != $lastElement) echo ' | ';
}
}
else {
// Render options as dropDownList
echo Html::form();
foreach($languages as $key=>$lang) {
echo Html::hiddenField(
$key,
$this->createMultilanguageReturnUrl($key));
}
echo Html::dropDownList('language', $currentLang, $languages,
array(
'submit'=>'',
)
);
echo Html::endForm();
}
?>
</div>
答案 0 :(得分:1)
经过大量试验后,我找到了解决问题的方法。 有关那些希望在yii2
中构建多语言小部件的人,请参阅下文<?php
namespace app\components\widgets;
use Yii;
use yii\helpers\Html;
use yii\base\Widget;
use app\components\views;
class LanguageSelectorPortlet extends Widget
{
public function init(){
$this->renderContent();
}
public function renderContent()
{
$currentLang = Yii::$app->language;
$languages = Yii::$app->params['languages'];
echo $this->render('languageSelector', array('currentLang' => $currentLang, 'languages'=>$languages));
}
}
,其视图文件如下
<?php
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
?>
<div id="language-select">
<?php
// Render options as links
$lastElement = end($languages);
foreach($languages as $key=>$lang) {
if($key != $currentLang) {
echo Html::a($lang,Yii::$app->getUrlManager()->createmultiUrl($key));
} else echo '<b>'.$lang.'</b>';
if($lang != $lastElement) echo ' | ';
}
?>
</div>
希望能帮助那些在YII2中与多语言小部件挣扎的人