我在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".
有人可以帮帮我吗?
答案 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>',
),
),