[英]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.