簡體   English   中英

在Yii Framework中創建控制器

[英]Create controller in Yii Framework

我在yii中創建新的控制器看起來像這樣:

class LanguageController extends Controller
{

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

在視圖文件中,我創建新的URL看起來像這樣:

<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".

有人可以幫幫我嗎?

嘗試這個,

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

試試這段代碼:

創建URL時無需添加action

當您從控制器對象創建URL時,無需提及控制器名稱。

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

如果您正在創建這樣的Url,我的意思是使用控制器

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

那么你不需要告訴createUrl控制器名稱。 只需傳遞沒有action關鍵字的動作Name,就像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>', ), ), 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM