今天我们开始进入《10天学会phpWeChat》系列教程的第二天:创建我的第一个hello world! 功能模块。

1、登录后台,进入 系统设置——自定义模块,如图:

自定义模块参数说明

上级模块:上级模块一共三个选项:会员member (一般很少会在其下面建立模块)、pc电脑端(建立Pc访问的官网、单页、商城模块等)、wechat微信公共号端(建立微信公共号端访问的微官网、微资讯、微商城等)

这里我们可以根据实际需求选择,此处示例我们选择wechat。

模块名称:模块的中文名称,命名没特殊限制。此处我们命名为hello world。

模块文件夹:模块的目录名称,命名要求由2-32位英文、数字组成,不能含有其他字符。此处我们命名为hello。

如果上级模块选择wechat 将在 addons/wechat/addons/下自动创建相同名称的目录;

如果上级模块选择pc 将在 addons/pc/addons/下自动创建相同名称的目录;

如果上级模块选择member 将在 addons/member /addons/下自动创建相同名称的目录。

由于我们第一步选择的是wechat ,所以点击提交后会在addons/wechat/addons/下自动创建名称为hello的目录

管理菜单:此处的作用是为了指定后台管理控制器的方法。

点击提交,提示自定义模块创建成功。

2、编写前端控制器。

如上图所示,模块创建成功后,自动进到模块管理列表页面,我们点击“复制模块链接URL”,然后在浏览器粘贴这个URL(http://www.example.com/index.php?m=hello&a=index)访问。系统提示:模板不存在的错误,如下图所示:

这是因为我们还没有创建视图和编写控制器逻辑。

进入 addons/wechat/addons/hello 目录,如下图所示:

所有初始模块的目录结构都是相同的,其中:

admin目录是存储后台管理操作控制器和视图的目录;

include目录是存储模型操作类文件(xxx.class.php文件)和模块辅助函数文件(xxx.func.php)的目录;

index.php是前端访问控制器。

我们首先打开index.php是前端访问控制器文件。

 <?php
     use wechat\hello\hello;
     use phpWeChat\Area;
     use phpWeChat\CaChe;
     use phpWeChat\Config;
     use phpWeChat\Member;
     use phpWeChat\Module;
     use phpWeChat\MySql;
     use phpWeChat\Order;
     use phpWeChat\Upload;

     !defined('IN_APP') && exit('Access Denied!');

     switch($action)
     {
         //以下 case 条件仅为 示例。您可以根据业务逻辑自由修改和拓展

         //case 'index':

             //在此写 index.php?m=hello&a=index 时的逻辑

             //break;

         //case 'list':

             //在此写 index.php?m=hello&a=list 时的逻辑

             //break;

         //以此类推...

         //case '...':

             //在此写 index.php?m=hello&a=... 时的逻辑

             //break;

         default:
             break;
     }
 ?>

根据访问URL(http://www.example.com/index.php?m=hello&a=index )的参数a 我们得出这个URL请求的是控制器的index路由。因此我们在index.php编写此路由代码:

 <?php
     use wechat\hello\hello;
     use phpWeChat\Area;
     use phpWeChat\CaChe;
     use phpWeChat\Config;
     use phpWeChat\Member;
     use phpWeChat\Module;
     use phpWeChat\MySql;
     use phpWeChat\Order;
     use phpWeChat\Upload;

     !defined('IN_APP') && exit('Access Denied!');

     switch($action)
     {
         case 'index':
             exit('hello world!');
             break;
         //以下 case 条件仅为 示例。您可以根据业务逻辑自由修改和拓展

         //case 'index':

             //在此写 index.php?m=hello&a=index 时的逻辑

             //break;

         //case 'list':

             //在此写 index.php?m=hello&a=list 时的逻辑

             //break;

         //以此类推...

         //case '...':

             //在此写 index.php?m=hello&a=... 时的逻辑

             //break;

         default:
             break;
     }
 ?>

然后再次访问该URL,则出现了 hello world的文字。如图:

3、编写前端视图。

由于在 index 路由代码中,我们使用了exit,所以程序直接输出了hello world字符串,如果改成echo 这种非中断的输出,

 <?php
     use wechat\hello\hello;
     use phpWeChat\Area;
     use phpWeChat\CaChe;
     use phpWeChat\Config;
     use phpWeChat\Member;
     use phpWeChat\Module;
     use phpWeChat\MySql;
     use phpWeChat\Order;
     use phpWeChat\Upload;

     !defined('IN_APP') && exit('Access Denied!');

     switch($action)
     {
         case 'index':
             echo 'hello world!';
             break;
         //以下 case 条件仅为 示例。您可以根据业务逻辑自由修改和拓展

         //case 'index':

             //在此写 index.php?m=hello&a=index 时的逻辑

             //break;

         //case 'list':

             //在此写 index.php?m=hello&a=list 时的逻辑

             //break;

         //以此类推...

         //case '...':

             //在此写 index.php?m=hello&a=... 时的逻辑

             //break;

         default:
             break;
     }
 ?>

则会同样报模板不存在的错误,

实际,此时我们需要创建一个视图。

根据上面的错误提示,我们需要进入 addons/wechat/addons/hello 目录,创建一个template目录,并在template 目录下创建一个default目录,然后在default 目录下创建一个名称为index.html的视图文件。

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>无标题文档</title>
 </head>

 <body>
 </body>
 </html>

此时再次刷新URL,则不再报错,正常输出了hello world 字符串。

4、将控制器的变量到模板里显示。

前面的例子我们都是通过php的 echo、exit等直接输出字符串,视图似乎并没有起到应有的作用。

事实上,在真正的模块开发中,控制器一般用于获取变量,然后通过视图将变量的值多样化的呈现给用户。

控制器端:

 <?php
     use wechat\hello\hello;
     use phpWeChat\Area;
     use phpWeChat\CaChe;
     use phpWeChat\Config;
     use phpWeChat\Member;
     use phpWeChat\Module;
     use phpWeChat\MySql;
     use phpWeChat\Order;
     use phpWeChat\Upload;

     !defined('IN_APP') && exit('Access Denied!');

     switch($action)
     {
         case 'index':
             $str= 'hello world!';
             break;
         //以下 case 条件仅为 示例。您可以根据业务逻辑自由修改和拓展

         //case 'index':

             //在此写 index.php?m=hello&a=index 时的逻辑

             //break;

         //case 'list':

             //在此写 index.php?m=hello&a=list 时的逻辑

             //break;

         //以此类推...

         //case '...':

             //在此写 index.php?m=hello&a=... 时的逻辑

             //break;

         default:
             break;
     }
 ?>

视图端:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>无标题文档</title>
 </head>

 <body>
 {$str}
 </body>
 </html>

刷新URL,达到了同样的效果。

至此,一个小型的phpWeChat功能模块就诞生了。:)

注:本文是基于phpWeChat1.0.8版本讲解(下载地址:http://s.phpwechat.com/app_38026ed22fc1a91d92b5d2ef93540f20)。

《10天学会phpWeChat》系列教程传送门:

10天学会phpWeChat——第二天:hello world!我的第一个功能模块的更多相关文章

  1. 10天学会phpWeChat——第七天:创建一个自适应PC网站+H5移动端的模块

    本教程基于phpWeChat核心框架1.1.0+版本.下载地址:http://s.phpwechat.com/app_38026ed22fc1a91d92b5d2ef93540f20 通过前面六讲的系 ...

  2. 10天学会phpWeChat——第六天:实现新闻的后台管理

    通过前面五讲的系列教程,我们完成了一个简单模块的前端发布.列表展示.详情展示.实际生产环境中,所有前台的数据都会有对应的后台操作进行统筹管理.我们称之为后台管理系统. 今天,我们开始<10天学会 ...

  3. 10天学会phpWeChat——第五天:实现新闻投稿功能

    在前几讲里,我们逐渐实现了自己小模块的新闻列表展示.新闻详情展示功能,现在您已经初步有能力开发一个phpWeChat小模块了,本文将在已开发的hello world模块基础上,增加一个新的功能--新闻 ...

  4. 10天学会phpWeChat——第四天:大U函数U()的使用

    在第三天,我们创建了一个"增强版"的文章模块,实现了数据从数据库到视图端展示的流程.但是我们仅仅是实现了数据列表的展示,对于文章详情等页面跳转并未涉及. 本文重点讲解phpWeCh ...

  5. 10天学会phpWeChat——第三天:从数据库读取数据到视图

    在第二天,我们创建了我们的第一个phpWeChat功能模块,但是比较简单.实际生产环境中,我们不可能有如此简单的需求.更多的情况是数据存储在MySql数据库中,我们开发功能模块的作用就是将这些数据从M ...

  6. 10天学会phpWeChat——第一天:核心框架的目录结构

    phpWeCaht是一款优秀的PC网站+微信公共号开发框架. 本博客系列将图文结合,详细介绍phpWeChat 的使用方法,今天进入phpWeChat系列教程之<10天学会phpWeChat&g ...

  7. 10天学会phpWeChat——第八天:Form类,丰富表单提交的字段类型

    通过前面七讲的系列教程,我们完成了一个包含后台并自适应PC+h5移动端的文章管理模块. 在实际的生产环境中,文章投稿.商品上传等操作并不会简单局限于一个text和textarea组成的表单.在实际中, ...

  8. 10天学会phpWeChat——第九天:数据库增、删、改、查(CRUD)操作

    数据库的操作(CRUD)是一个现代化计算机软件的核心,尤其针对web应用软件.虽然在前面的几讲里,我们针对数据库操作大致有了一些了解,但今天我们需要再次强化下. 除了新瓶装老酒,我们今天还引入一个新的 ...

  9. 10天学会phpWeChat——第十天:phpWeChat的会员注册、登录以及微信网页开发

    通过前面的系列教程,我们系统的讲解了phpWeChat从视图端.控制器端到模型端的操作流程:熟悉了phpWeChat的目录结构:掌握了视图端模板如何创建一个丰富的表单和模型端如何操作数据库.这一切都是 ...

随机推荐

  1. International Conference for Smart Health 2015 Call for Papers

    Advancing Informatics for healthcare and healthcare applications has become an international researc ...

  2. Ant和Maven的作用是什么?两者之间功能、特点有哪些区别?

    Ant和Maven都是基于Java的构建(build)工具.理论上来说,有些类似于(Unix)C中的make ,但没有make的缺陷. Ant是软件构建工具,Maven的定位是软件项目管理和理解工具. ...

  3. Direct3D 10学习笔记(二)——计时器

    本篇将简单整理Direct3D 10的计时器实现,具体内容参照< Introduction to 3D Game Programming with DirectX 10>(中文版有汤毅翻译 ...

  4. 【腾讯bugly干货分享】Android自绘动画实现与优化实战——以Tencent OS录音机波形动

    前言 本文为腾讯bugly的原创内容,非经过本文作者同意禁止转载,原文地址为:http://bugly.qq.com/bbs/forum.php?mod=viewthread&tid=1180 ...

  5. #include &lt;NOIP2010 Junior&gt; 三国游戏 ——using namespace wxl;

    题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有 N 位武将(N为偶数且不小于 4),任意两个武将之 ...

  6. Memcached深度分析

    Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能.关于这个东西,相信很多人都用过,本文意在通过对 ...

  7. SourceTree 免登录跳过初始设置

    SourceTree 安装之后需要使用账号登陆以授权,以前是可以不登陆的,但是现在是强制登陆. 虽然是免费授权,但是碰上不可抗力因素,登陆不是很方便,这里记录一下跳过这个初始化的步骤. 安装之后,转到 ...

  8. Spring4.1.0 整合quartz1.8.2 时 : class not found : org.springframework.scheduling.quartz.JobDetailBean

    最近做一个 Spring4.1.0 集成 quartz1.8.2 定时器功能,一直报 class not found : org.springframework.scheduling.quartz.J ...

  9. windows下安装多个tomcat服务

    摘要 公司服务器已经部署2个tomcat,分别属于不同的系统.今天新开发的系统也要上线测试,故新增一个tomcat服务器. 1.官网下载tomcat 7 解压缩版本.我使用的是 apache-tomc ...

  10. CodeForces 701B Cells Not Under Attack

    题目链接:http://codeforces.com/problemset/problem/701/B 题目大意: 输入一个数n,m, 生成n*n的矩阵,用户输入m个点的位置,该点会影响该行和该列,每 ...