Yii 如何使用CHtml::link将参数附加到当前页面?

Yii 如何使用CHtml::link将参数附加到当前页面?,yii,Yii,使用Yii,并尝试将Lang=xx附加到当前页面url的末尾,并在页面上显示它 我将下面的代码放在protected/views/layout/main.php中 <?php echo CHtml::link('English', array('','lang'=>'en'), array('class'=>'en')) ?> <?php echo CHtml::link('中文', array('','lang'=>'tw'), array('class'=

使用Yii,并尝试将Lang=xx附加到当前页面url的末尾,并在页面上显示它

我将下面的代码放在protected/views/layout/main.php中

<?php echo CHtml::link('English', array('','lang'=>'en'), array('class'=>'en')) ?>
<?php echo CHtml::link('中文', array('','lang'=>'tw'), array('class'=>'tw')) ?>
<?php echo CHtml::link('日本語', array('','lang'=>'jp'), array('class'=>'jp')) ?>

对于像“/site/index”这样的标准页面,或者像“/site/contact”这样的控制器操作页面,它们工作得很好。但对于像“site/page?view=about”这样的标准静态页面,它不起作用。预期的url应该类似于“site/page?view=about&lang=tw”,但相反,它会给我“site/page?lang=tw”


我如何解决这个问题呢?

您可以这样给chtml链接

$language = 'en';
CHtml::link("English", array('site/about/lang/' . $language));
site/about/lang/en=控制器/action/lang/en


我希望这会对您有所帮助。

我最终使用了langhandeler扩展和url规则,并将[site]/[path]?lang=[language code]映射到[site]/[language code]/[path]

然后我将链接编码如下:

        <?php 
        $request = $_SERVER['REQUEST_URI'];
        $path_a = explode("/",$request);
        $haveLang = isSet($_GET["lang"]);
        $uri = ($haveLang?
                substr($request, strlen($path_a[1])+1) //strip language prefix and the slash
                :$request);                               //don't process if the page is in default language
        echo CHtml::link(CHtml::encode(Yii::app()->name), CHtml::normalizeUrl(($haveLang?'/'.$_GET["lang"].'/':'/')), array('id'=>'logo')); 
        ?>
          <div id="lang_switch">                  
            <?php
            echo CHtml::link('English', CHtml::normalizeUrl($uri), array('class'=>'en')); //no need to add default language prefix
            echo CHtml::link('中文', CHtml::normalizeUrl('/tw'.$uri), array('class'=>'tw'));
            echo CHtml::link('日本語', CHtml::normalizeUrl('/jp'.$uri), array('class'=>'jp'));
            ?>
          </div>

您是否只是想为用户提供一种方法来设置Yii应用程序的
CLocale
?还是每个控制器都在寻找$_GET['lang']参数?我想做的是为站点提供一个通用语言切换器。结果表明,静态页面的工作方式不同。我确实设法解决了这个问题,但在这里重复有点太长了。如果有人感兴趣,请参考链接:谢谢你的评论。然而,我在寻找更有活力的东西。我需要的链接将引用回自己,并添加语言代码切换语言。