yii2是一個很好的框架,首先我們來看yii2中控制器可以幹些什麼:
1 .重定向 $this->redirect()(比如說做了一個登錄界面,那括號裏的url可以是你的主頁)
2 .回到首頁 $this->goHome()
3 .返回 $this->goBack()
4 .刷新當前頁面 $this->refresh()
5 .渲染視圖 $this->render(視圖,注入視圖數組數據)
6 .渲染沒有layout的視圖 $this->renderPartial(視圖,注入視圖數組數據)
先看一個簡單例子:
<?php
namespace app\controllers; //定義命名空間
use yii\web\Controller; //引入命名空間
class TestController extends Controller{
public function actionIndex(){
echo 'hello world!';
}
}
?>
這個文檔保留在controllers目錄下,然後用網址打開便可看到hello world了。
關於控制器ID怎麼寫(也就是controllers目錄裏文件的名字怎麼起),規則如下:
要將控制器ID轉換控制器類的名字,應該做到以下幾點 -
1. 刪除連字符
2. 替換反向斜線
3. 添加Controller後綴
4.前面加上控制器命名空間
示例:
page 變成 app\controllers\PageController.
post-article 變成 app\controllers\PostArticleController.
user/post-article 變成 app\controllers\user\PostArticleController.
userBlogs/post-article 變成 app\controllers\userBlogs\PostArticleController.
下面我們來看使用action(有內聯和獨立兩種方法),每個控制器都有一個默認動作,所以理解後便可自己改爲其他動作:
首先說下動作ID(我一般用內聯動作),規則如下:
1. 轉換動作ID的所有單詞的第一個字母轉換成大寫
2.刪除連字符
3.添加 action 前綴
示例:
index 變成 actionIndex.
hello-world(如在上面的例子) 變成 actionHelloWorld.、
內聯動作上面的例子就是這個。
順便看一下怎麼創建獨立action:
第1步- 在項目根內創建 components 文件夾。在文件夾內創建一個名爲 GreetingAction.php 的文件,並使用下面的代碼。
<?php
namespace app\components;
use yii\base\Action;
class HeyAction extends Action {
public function run() {
return "hey";
}
}
?>
第2步 - 修改上述hello world動作的Test文件使用這種方式。
<?php
namespace app\controllers;
use yii\web\Controller;
class TestController extends Controller {
public function actions() {
return [
'hey' => 'app\components\HeyAction',
];
}
?>
訪問瀏覽器這個的url便可看到hey。
另外, 控制器儘量滿足:
1. 每一個動作都應該包含的代碼只有幾行,儘量小
2.用於響應視圖
3.不要嵌入HTML
4.訪問請求數據
5.調用模型的方法
6.不處理請求數據。這些應在模型中進行處理