Yii建立頁面


現在,我們要在應用程式中建立一個「Hello World」的頁面。要建立一個頁面,我們必須建立一個動作和檢視。
動作要在控制器中宣告。終端使用者將收到一個動作的執行結果。

第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檔案。

第2步 - 因此,在檔案夾 views/site 內建立一個名為 speak.php 檔案,並使用下面的程式碼。
<?php 
   use yii\helpers\Html; 
?> 
<?php echo Html::encode($message); ?> 
需要注意的是,message引數列印之前進行HTML編碼以避免XSS攻擊。

第3步 - 在Web瀏覽器中鍵入以下:http://localhost:8080/index.php?r=site/speak&message=hello%20world 

就會看到如下所示視窗的輸出結果 -
Yii創建頁面

URL中的「r」引數表示路由。路由預設格式為:controllerID/actionID。在我們的例子中,路由 site/speak 將被解析為 SiteController類和 speak 動作。


出錯處理:

解決:

開啟檔案:config/web.php,找到 'cookieValidationKey' => '', (大概在第12行),隨便寫上一個值,這裡我隨便修改為:

'cookieValidationKey' => 'tw511.com', 就可以了。