在Yii Framework中创建控制器

时间:2014-01-16 04:32:35

标签: php yii

我在yii中创建新的控制器,如下所示:

class LanguageController extends Controller
{

    public function actionSwitchLanguage($language)
    {
        Yii::app()->session = $language;
        $this->redirect(Yii::app()->request->urlReferrer);
    }
}

在views文件中,我创建了这样的新网址:

<a href="<?php echo Yii::app()->controller->createUrl('Language/actionSwitchLanguage',array('language'=>'en')); ?>">English</a>

但是点击链接时会出现错误:

Error 404
The system is unable to find the requested action "actionswitchlanguage".
有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:1)

试试这个,

<a href="<?php echo Yii::app()->controller->createUrl('Language/switchLanguage',array('language'=>'en')); ?>">English</a>

答案 1 :(得分:0)

试试这段代码:

创建网址时无需添加action

当您从控制器对象创建URL时,无需提及控制器名称。

<a href="<?php echo Yii::app()->controller->createUrl('switchLanguage',array('language'=>'en')); ?>">English</a>

答案 2 :(得分:0)

如果您正在创建这样的Url,我的意思是使用控制器

Yii::app()->controller->createUrl('switchLanguage',array('language'=>'en')); 

然后您不需要告诉createUrl控制器名称。只需将没有操作关键字的操作名称传递为 kumar_v表示

<小时/> 以上陈述类似于
$this->createUrl('switchLanguage',array('language'=>'en')); 这里 $ this 是当前控制器的对象,所以这里你不需要告诉 createUrl()关于控制器名称

注意: - 视图应该是同一个控制器
但是如果你要创建像

这样的网址
Yii::app()->createUrl('language/switchLanguage',array('language'=>'en'));

然后你需要告诉createUrl()方法关于控制器和动作(但没有动作关键字:))

更新

config / main.php 中 取消注释以下部分

'urlManager'=>array(
            'urlFormat'=>'path',
            'rules'=>array(
                '<controller:\w+>/<id:\d+>'=>'<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
                '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
            ),
        ),