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 動作。


出錯處理:

Yii創建頁面

解決:

打開文件:config/web.php,找到 'cookieValidationKey' => '', (大概在第12行),隨便寫上一個值,這裏我隨便修改爲:

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