mikehaertl / localeurls

Automatic locale/language management for URLs
10 stars 3 forks source link

URL params left after change back default language #4

Closed izemize closed 11 years ago

izemize commented 11 years ago

I have left / missed query string (?hash=akjdnjaksndjaksnd) after change language back to default. All not default language work perfect.

mikehaertl commented 11 years ago

@Stageline Thanks for your bug report. Can you explain a little more, what exactly you did? E.g. how did you configure your plugin, which URLs did you call/create in order and what did you expect?

izemize commented 11 years ago

For example:

url: http://xyz.com/sk/user/validate?hash=aksfjdbasjdnakjsdnakjdn

When i use non default language (sk) "hash" passed correctly, but when i click default language (en) hash lost and i saw bad request.

Now clean?

config:

<?php
        'urlManager'=>array(
            'class'=>'ext.localeurls.LocaleUrlManager',
            'urlFormat'=>'path',
            'showScriptName'=>false,
            'rules'=>array(
                '<view:\w+>'=>'site/page',
                '<controller:\w+>/<id:\d+>'=>'<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
                '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
            ),
        ),

selector widget:

<?php
class LanguageSelector extends CWidget
{
    public function run()
    {
        Yii::app()->clientScript->registerCssFile(Yii::app()->getTheme()->baseUrl.'/css/LanguageSelector.css');
        $app = Yii::app();
        $controllerId = $app->controller->id;
        $actionId = $app->controller->action->id;
        $params = $_GET;
        $languages = $app->request->languages;
        $language = $app->language;

        array_unshift($params,"$controllerId/$actionId");

        echo CHtml::openTag('div',array('class'=>'LanguageSelector'));
        echo CHtml::openTag('ul');

        foreach($languages as $lang)
        {
            if($lang === $language)
            {
                continue;
            }

            $params['language'] = $lang;

            echo CHtml::openTag('li');
            echo CHtml::link(CHtml::image('/icons/flags/'.($lang == 'en' ? 'us' : $lang).'.png',$lang),$params);
            echo CHtml::closeTag('li');
        }

        echo CHtml::closeTag('ul');
        echo CHtml::closeTag('div');
    }
}

Thanks :)

mikehaertl commented 11 years ago

Should be fixed now. Thanks for your bug report :)

izemize commented 11 years ago

Thanks for fix. Good work :)