PHP开发教程

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 

就会看到如下所示窗口的输出结果 -

11.png


URL中的“r”参数表示路由。路由默认格式为:controllerID/actionID。在我们的例子中,路由 site/speak 将被解析为 SiteController类和 speak 动作。


出错处理:

11.png


解决:

打开文件:config/web.php,找到 'cookieValidationKey' => '', (大概在第12行),随便写上一个值,这里我随便修改为:

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

Powered by PHP二次开发 ©2008-2017