文档中心

搜索热词: 下载安装 支付插件 模板 增删改查

创建新页面
本章节主要是介绍,如何从头创建一个简单的页面并能正常访问。本章节的内容建立在您已经熟悉《控制器介绍》的相关内容。如不熟悉,请先阅读该章节内容。
一、准备文件
假设我们需要在(frontend)PC前台增加一个“关于我们”的页面,我们定义控制器名为company,操作方法名为about,那么我们需要在 @shopwind/frontend/controllers文件夹下编写一个PHP文件CompanyControler.php,基础代码如下:
namespace frontend\controllers;
use Yii;
class CompanyController extends \common\controllers\BaseMallController
{
    public function init() {
        parent::init();
    }
}
这里我们实现了一个init方法,目的就是调用控制器父类BaseMallController进行页面的初始化操作(这个父类执行了什么东西,大家可以先不用理会太多,等后面慢慢了解系统后再去研读,对控制器父类的介绍,可以参考控制器介绍)。接下来,我们就来实现About方法,代码如下(请注意:方法名首字母必须大写 并且跟着保留字action
namespace frontend\controllers;
use Yii;
class CompanyController extends \common\controllers\BaseMallController
{
    public function init() {
        parent::init();
    }
    public function actionAbout() {
        echo "ShopWind是一款开源的B2B2C电商系统..."
    }
}
二、浏览页面
我们打开浏览器输入地址http://localhost/shopwind/frontend/web/company/about.html即可显示我们的页面。这里我们使用的是本地地址, 如果是线上环境,请核实你们的域名是否解析到了frontend/web目录,如果解析到了,访问地址就会变成http://您的域名/company/about.html, 当然,如果是出于测试方便,不想解析到frontend/web目录,而是直接解析到Web根目录,也可以通过http://您的域名/frontend/web/company/about.html来访问 ,但出于安全问题考虑,不建议您在生产环境这样做。
在这个例子中,我们制作的页面只是输出了一串文本,并没有显示一个视图(如:html)文件,是因为显示一个文件涉及到视图内容部分,我们将在后面的章节介绍,参阅:《视图介绍》《数据绑定》
三、编写后台页面
编写(backend)后台页面其实跟编写(frontend)前台页面其实流程是一样的,代码也几近相同,最大的区别就是文件存放的路径不同。 如果需要编写后台页面,我们需要在后台控制器目录@shopwind/backend/controllers下新增控制器文件CompanyControler.php, 为了方便区别,我们继续使用“关于我们”作为例子代码:
namespace backend\controllers;
use Yii;
class CompanyController extends \common\controllers\BaseAdminController
{
    public function init() {
        parent::init();
    }
    public function actionAbout() {
        echo "ShopWind是一款开源的B2B2C电商系统..."
    }
}
该页面的访问路径为http://localhost/shopwind/backend/web/company/about.html。从代码可以看到,我们只修改了两处地方,一个是命名空间,一个是继承类,非常简单就能够 实现了一个后台页面的简单输出,代码跟前台页面几乎完全一致。
同理,我们编写手机端(H5/WAP)页面的时候,也仅需要简单修改一两处代码就能实现(H5端继承父类的规则跟frontend前台页面是一样的),H5端的控制器位于@shopwind/mobile/controllers下,大家可以参考项目源码进行理解, 这里不再举例说明。
有关控制器的更多问题,可以参考Yii2的控制器:Yii2控制器介绍了解更多内容,也可以访问我们的 开发者社区反馈,我们会有官方技术人员在线解答。