Как добавить параметр на текущую страницу, используя CHtml :: link? - PullRequest
0 голосов
/ 12 декабря 2011

Использование Yii и попытка добавить Lang = xx в конец URL текущей страницы и представить его на странице.

Я положил следующий код в защищенный / 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".

Как я могу это исправить?

Ответы [ 2 ]

1 голос
/ 08 февраля 2012

Я закончил тем, что сделал это с расширением langhandeler и правилами URL и сопоставил [site] / [path]? Lang = [код языка] с [site] / [code language] / [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>

, что в значительной степени решило мою проблему.Я надеюсь, что это может помочь кому-то еще в будущем.

0 голосов
/ 14 декабря 2011

Вы можете дать ссылку в формате chtml следующим образом

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

site / about / lang / en = controller / action / lang / en

Я надеюсь, что это будетпомочь вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...