Php YII语言选择器不';t发回到控制器

Php YII语言选择器不';t发回到控制器,php,yii,Php,Yii,我正在做一个语言选择器,并遵循wiki。我可以实现这个小部件,但是当我尝试下拉时,它不会进行回发。对于控制器,我认为控制器应该是:components/controller.php,而不是components/MyController.php。但无论如何,两者都不起作用。有人知道在这里做什么吗?我想我错过了一些关于在这里发回邮件的要点 控制器(组件/Controller.php): 小部件类(components/LangBox.php): 小部件视图(components/views/lang

我正在做一个语言选择器,并遵循wiki。我可以实现这个小部件,但是当我尝试下拉时,它不会进行回发。对于控制器,我认为控制器应该是:components/controller.php,而不是components/MyController.php。但无论如何,两者都不起作用。有人知道在这里做什么吗?我想我错过了一些关于在这里发回邮件的要点

控制器(组件/Controller.php):

小部件类(components/LangBox.php):

小部件视图(components/views/langBox.php)


我确信您的代码工作正常,但您是否确实提交了表单?您应该有一个jquery,它可以检测下拉列表何时更改,并将其提交给服务器并刷新页面。其他一切都很好


我不知道“提交”=>“是做什么的。

你在Chrome/Firefox开发者工具的“网络”选项卡上看到任何POST请求吗?您是否从
Controller
components/Controller.php
)扩展了控制器?您的代码适合我。你能描述一下它对你不起作用的方式吗?你期望什么样的产出,你得到了什么?
    function init()
        {
            parent::init();
            $app = Yii::app();
            if (isset($_POST['_lang']))
            {
                $app->language = $_POST['_lang'];
                $app->session['_lang'] = $app->language;
            }
            else if (isset($app->session['_lang']))
            {
                $app->language = $app->session['_lang'];
            }
            Yii::app()->session['_lang'] = 'anders';
        }
class LangBox extends CWidget
{
    public function run()
    {
        $currentLang = Yii::app()->language;
        $this->render('langBox', array('currentLang' => $currentLang));
    }
}
<?php echo CHtml::form(); ?>
    <div id="langdrop">
        <?php echo CHtml::dropDownList('_lang', $currentLang, array(
            'en_us' => 'English', 'is_is' => 'Icelandic'), array('submit' => '')); ?>
    </div>
<?php echo CHtml::endForm(); ?>