第1步 - 宣告一個動作 speak 在現有 SiteController, 它這是在類檔案 controllers/SiteController.php 中定義的。
<?php namespace app\controllers; use Yii; use yii\filters\AccessControl; use yii\web\Controller; use yii\filters\VerbFilter; use app\models\LoginForm; use app\models\ContactForm; class SiteController extends Controller { /* other code */ public function actionSpeak($message = "default message") { return $this->render("speak",['message' => $message]); } } ?>
我們定義的 speak 動作作為一個名為 actionSpeak 方法。在Yii中,所有操作方法的字首詞是action。這是框架用於區別非動作的操作方法。如果動作ID需要多個詞語,那麼他們將被由破折號連線。因此,動作ID為add-pos對應的操作方法是AddPost。
在上面的程式碼中,函式接受一個GET引數 - $message。也是呼叫了一個名為「render」方法來渲染一個檢視檔案。我們通過 message 引數到檢視。渲染結果是一個完整的HTML頁面。
檢視是生成響應內容的指令碼。對於 speak 動作,我們建立列印訊息的 speak 檢視。當 render 方法被呼叫時,它會查詢一個名稱為: view/controllerID/vewName.php 的PHP檔案。
<?php use yii\helpers\Html; ?> <?php echo Html::encode($message); ?>
第3步 - 在Web瀏覽器中鍵入以下:http://localhost:8080/index.php?r=site/speak&message=hello%20world
URL中的「r」引數表示路由。路由預設格式為:controllerID/actionID。在我們的例子中,路由 site/speak 將被解析為 SiteController類和 speak 動作。
出錯處理:
解決:
開啟檔案:config/web.php,找到 'cookieValidationKey' => '', (大概在第12行),隨便寫上一個值,這裡我隨便修改為:
'cookieValidationKey' => 'tw511.com', 就可以了。