微信应用开发教程

微信应用开发教程

群发时出现问题,说此功能认证公共号才能使用,其他功能都可以

反馈geeson 回复了问题 • 2 人关注 • 1 个回复 • 535 次浏览 • 2018-01-05 11:40 • 来自相关话题

开发了一个插件,如何调试?

提问jinmandou 回复了问题 • 3 人关注 • 6 个回复 • 851 次浏览 • 2017-12-23 20:49 • 来自相关话题

微信前端开发

提问geeson 回复了问题 • 2 人关注 • 1 个回复 • 572 次浏览 • 2017-12-19 09:24 • 来自相关话题

扩展里面使用分页

提问geeson 回复了问题 • 2 人关注 • 1 个回复 • 519 次浏览 • 2017-12-02 11:44 • 来自相关话题

如何使用rhaphp快速开发微信支付应用?

文档教程geeson 发表了文章 • 29 个评论 • 3004 次浏览 • 2017-10-23 12:40 • 来自相关话题

在微信开发中,经常到会遇到微信支付与 JSSDK 的问题。可能几天都搞不定。相信大家都有遇到过吧?讲真的我第一次做支付就是这样的。那么现在福利来了。这些你都不用考虑了,只是几行代码就可以轻松实现。但是我也知道,最算什么好的事情,也是没有办法满足所有人。我已经做了一个微信支付的演示应用。这个应用功能不多作为演示与学习使用的。如果需要更多的功能,也可以自行开发。或者向在社区里提需求。那么先来看演示:(请下载附件后安装)















代码请你下载文章下的附件,如果你对应用开发还不熟悉的话,你可以花上几分钟看一下文档教程,也是快速上手的。

那么先来看代码,打开 chongZhi/controller/Deposit.php:public function topUp()
{

if (Request::instance()->isPost()) {
if ($member = getMember()) {
$money = input('post.money');
if (isset($member['openid']) && !empty($member['openid'])) {
if (empty($money) || $money < 0.09) {
ajaxMsg(0, '金额最小为0.1元');
} else {
$mid = $this->mid;
if (!$mid && $mid != $member['mpid']) {
ajaxMsg(0, '公众号标识与当前用户不匹配');
}
$model = new Payment();
if ($id = $model->addPayment($member['id'], $member['mpid'], $money, '账户充值')) {
ajaxReturn(['url' => getWxPayUrl($this->mid,['payment_id' => $id,'view'=>$this->addonRoot.'/view/common/pay.html'])]);
} else {
ajaxMsg(0, '下单失败');
}
}
} else {
ajaxMsg(0, '支付参数:openid不存在');
}
} else {
ajaxMsg(0, '用户不存在');
}
} else {
$this->assign('title', '账户充值');
$this->fetch();
}
}在以上的代码中,其实在微信支付上只有几行是重点的:$model = new Payment();
$id = $model->addPayment($member['id'], $member['mpid'], $money, '账户充值');
getWxPayUrl($this->mid,['payment_id' => $id,'view'=>$this->addonRoot.'/view/common/pay.html'])
解释一下:支付首先要有定单对吧,这个就不必多说了吧。$model->addPayment($member['id'], $member['mpid'], $money, '账户充值');        这里就是创建定单的,第一个参数就是会员 ID 号,第二个参数就是当前公众号的 ID 号。第三个就是金额了。如果是1元就填写1,一分就是0.1,经常抢红包的同学应该对这个0.1非常熟悉吧?第四个参数就是商品标题了。由于我这里是充值,那么我就写了账户充值了。如果你想知道更多的参数,看一下Payment模型。

      增加定单成功后这里会返回一个定单 ID 的。有了定单后那么就是跳转支付页面了。我这里是 AJAX 是所以我这里是返回JSON 返回前端 转跳了。getWxPayUrl()       这个函数主要解决了,微信支付授权目录的,意义重大。很多人都是遇到微信支付当前页面的URL未注册。这样的错误,其实就是支付目录错误。那么系统默认了:http://域名/service/payment/wxpay 。只要你把这个授权填写到微信官方支付后台。就可以了。
getWxPayUrl()第一个参数是公众号的 ID,第一个就是数组形式的。
['payment_id' => $id],payment_id是必须的。view如果你想自定的支付页面就填写你的模板路径。如果为空就是使用官方默认的支付页面的模板。这里相信比较多的同学还是满意这种灵活吧。

如果你在使用过程中,有任何问题,请在Rhaphp官方社区求助。必回! 查看全部
在微信开发中,经常到会遇到微信支付与 JSSDK 的问题。可能几天都搞不定。相信大家都有遇到过吧?讲真的我第一次做支付就是这样的。那么现在福利来了。这些你都不用考虑了,只是几行代码就可以轻松实现。但是我也知道,最算什么好的事情,也是没有办法满足所有人。我已经做了一个微信支付的演示应用。这个应用功能不多作为演示与学习使用的。如果需要更多的功能,也可以自行开发。或者向在社区里提需求。那么先来看演示:(请下载附件后安装)

1.png


1.png


1.png

代码请你下载文章下的附件,如果你对应用开发还不熟悉的话,你可以花上几分钟看一下文档教程,也是快速上手的。

那么先来看代码,打开 chongZhi/controller/Deposit.php:
public function topUp()
{

if (Request::instance()->isPost()) {
if ($member = getMember()) {
$money = input('post.money');
if (isset($member['openid']) && !empty($member['openid'])) {
if (empty($money) || $money < 0.09) {
ajaxMsg(0, '金额最小为0.1元');
} else {
$mid = $this->mid;
if (!$mid && $mid != $member['mpid']) {
ajaxMsg(0, '公众号标识与当前用户不匹配');
}
$model = new Payment();
if ($id = $model->addPayment($member['id'], $member['mpid'], $money, '账户充值')) {
ajaxReturn(['url' => getWxPayUrl($this->mid,['payment_id' => $id,'view'=>$this->addonRoot.'/view/common/pay.html'])]);
} else {
ajaxMsg(0, '下单失败');
}
}
} else {
ajaxMsg(0, '支付参数:openid不存在');
}
} else {
ajaxMsg(0, '用户不存在');
}
} else {
$this->assign('title', '账户充值');
$this->fetch();
}
}
在以上的代码中,其实在微信支付上只有几行是重点的:
$model = new Payment();
$id = $model->addPayment($member['id'], $member['mpid'], $money, '账户充值');
getWxPayUrl($this->mid,['payment_id' => $id,'view'=>$this->addonRoot.'/view/common/pay.html'])

解释一下:支付首先要有定单对吧,这个就不必多说了吧。
$model->addPayment($member['id'], $member['mpid'], $money, '账户充值');
        这里就是创建定单的,第一个参数就是会员 ID 号,第二个参数就是当前公众号的 ID 号。第三个就是金额了。如果是1元就填写1,一分就是0.1,经常抢红包的同学应该对这个0.1非常熟悉吧?第四个参数就是商品标题了。由于我这里是充值,那么我就写了账户充值了。如果你想知道更多的参数,看一下Payment模型。

      增加定单成功后这里会返回一个定单 ID 的。有了定单后那么就是跳转支付页面了。我这里是 AJAX 是所以我这里是返回JSON 返回前端 转跳了。
getWxPayUrl()
       这个函数主要解决了,微信支付授权目录的,意义重大。很多人都是遇到微信支付当前页面的URL未注册。这样的错误,其实就是支付目录错误。那么系统默认了:http://域名/service/payment/wxpay 。只要你把这个授权填写到微信官方支付后台。就可以了。
getWxPayUrl()第一个参数是公众号的 ID,第一个就是数组形式的。
['payment_id' => $id],payment_id是必须的。view如果你想自定的支付页面就填写你的模板路径。如果为空就是使用官方默认的支付页面的模板。这里相信比较多的同学还是满意这种灵活吧。

如果你在使用过程中,有任何问题,请在Rhaphp官方社区求助。必回!

【第六篇】微信开发应用之Api.php介绍

文档教程geeson 发表了文章 • 5 个评论 • 2280 次浏览 • 2017-10-11 12:42 • 来自相关话题

在微信开发的第一篇有说明了Api.php:http://ask.rhaphp.com/article/7
在这一篇主要介绍与微信如何交互与通信的,这里我创建是一个名称 myDemo的应用作为演示。目录文件如下图:





如果你对目录不了解请回头回文档,创建好之后,然后系统的后台进入此演示应用,在响应中设置关键词,当然也可以在自动回复中增加关键词然后选择演示应用,两者可选。你觉得那个方便使用那个。关键词设为:rhaphp,如下图:





也可以在自动回复中可以设置的,设置完成后可以看到,如下图:





粉丝触发关键词如何回复文本?很简单的代码如下:public function message($msg = [], $param = [])
{
replyText('二狗,你好!你触发了myDemo');
}在公众号输入rhaphp后,效果如下图:





如何看到微信发送的消息?public function message($msg = [], $param = [])
{
replyText(json_encode($msg));
}因为$msg是数据来的,文本方式回复那么我们要把$msg转成json。效果如下图:






当然还可以回复其它,图文消息,图片消息,视频消息等,我在介绍函数文档会说明。 查看全部
在微信开发的第一篇有说明了Api.php:http://ask.rhaphp.com/article/7
在这一篇主要介绍与微信如何交互与通信的,这里我创建是一个名称 myDemo的应用作为演示。目录文件如下图:

1.png

如果你对目录不了解请回头回文档,创建好之后,然后系统的后台进入此演示应用,在响应中设置关键词,当然也可以在自动回复中增加关键词然后选择演示应用,两者可选。你觉得那个方便使用那个。关键词设为:rhaphp,如下图:

1.png

也可以在自动回复中可以设置的,设置完成后可以看到,如下图:

1.png

粉丝触发关键词如何回复文本?很简单的代码如下:
public function message($msg = [], $param = [])
{
replyText('二狗,你好!你触发了myDemo');
}
在公众号输入rhaphp后,效果如下图:

1.png

如何看到微信发送的消息?
public function message($msg = [], $param = [])
{
replyText(json_encode($msg));
}
因为$msg是数据来的,文本方式回复那么我们要把$msg转成json。效果如下图:


1.png

当然还可以回复其它,图文消息,图片消息,视频消息等,我在介绍函数文档会说明。

【第五篇】 RhaPHP微信应用开发之视图view

文档教程geeson 发表了文章 • 0 个评论 • 1902 次浏览 • 2017-10-10 13:08 • 来自相关话题

应用的视图是支持模板的继承,从官方提供的投票的应用中有使用到,如下图:




因为开发使用得最多的就是模板继承,在使用上也是比较简单与好用的。如果有同学从来都没有没有接触过,建议你去看一下 THINKPHP5文档中模板继承。如果你想按着老套路的当然也是可以的,但是我建议你要跟上流行的节奏。

如何引入应用下的 static里面的资源?如我要引入 static/css/style.css 代码如下:{CSS href="__ADDONSTATIC__/css/style.css" /}__ADDONSTATIC__也是自动的识别当前应用的路径。

如何使用微信的JSSDK?代码如下: {:hook('Jssdk')}当你使用此行为后,并需要你再去配置 JSSDK 任何的东西,系统已经本身已经配置好了,只要你使用了{:hook('Jssdk')}系统已经为你做好了一切。如果报错的话,(签名错误呀,URL不合Fa呀)请不要尝试在系统找原因,只要填写相应的参数是正确的,公众号配置是正确的,那么系统99%是正常的。

投票应用中的代码,如下图:





若配置成功,那么你就可以在 wx.ready中使用你需要的接口了。

使用上传组件:{:hook('Upload',['type'=>'image','name'=>'cover'])}如果你需要传入值:{:hook('Upload',['type'=>'image','name'=>'input name的名称','value'=>'路径'])}多图上传:{:hook('Upload',['type'=>'images','name'=>$v.name,'value'=>$v.value])}需要使用媒体库的话:{:hook('Upload',['type'=>'images','name'=>$v.name,'material'=>true,'value'=>$v.value])}上传文件:{:hook('Upload',['type'=>'file','name'=>$v.name,'bt_title'=>'选择文件','value'=>$v.value])}如何对应用生成 URL?使用:addonUrl()
// 与THINKPHP5 中的 URL()使用方法也是一样的,投票应用使用到
$.post("{:addonUrl('toVote')}",{'bm_id':id},function (res) {
layer.close(index);
layer.msg(res.msg);
})
完整的传入:应用名称/控制器/方法
如果在相同的控制器里跳转,可以只传方法名就可以了。更多可以参考 thinkphp中的 URL函数 查看全部
应用的视图是支持模板的继承,从官方提供的投票的应用中有使用到,如下图:
1.png

因为开发使用得最多的就是模板继承,在使用上也是比较简单与好用的。如果有同学从来都没有没有接触过,建议你去看一下 THINKPHP5文档中模板继承。如果你想按着老套路的当然也是可以的,但是我建议你要跟上流行的节奏。

如何引入应用下的 static里面的资源?如我要引入 static/css/style.css 代码如下:
{CSS href="__ADDONSTATIC__/css/style.css" /}
__ADDONSTATIC__也是自动的识别当前应用的路径。

如何使用微信的JSSDK?代码如下:
 {:hook('Jssdk')}
当你使用此行为后,并需要你再去配置 JSSDK 任何的东西,系统已经本身已经配置好了,只要你使用了{:hook('Jssdk')}系统已经为你做好了一切。如果报错的话,(签名错误呀,URL不合Fa呀)请不要尝试在系统找原因,只要填写相应的参数是正确的,公众号配置是正确的,那么系统99%是正常的。

投票应用中的代码,如下图

1.png

若配置成功,那么你就可以在 wx.ready中使用你需要的接口了。

使用上传组件:
{:hook('Upload',['type'=>'image','name'=>'cover'])}
如果你需要传入值:
{:hook('Upload',['type'=>'image','name'=>'input name的名称','value'=>'路径'])}
多图上传:
{:hook('Upload',['type'=>'images','name'=>$v.name,'value'=>$v.value])}
需要使用媒体库的话:
{:hook('Upload',['type'=>'images','name'=>$v.name,'material'=>true,'value'=>$v.value])}
上传文件:
{:hook('Upload',['type'=>'file','name'=>$v.name,'bt_title'=>'选择文件','value'=>$v.value])}
如何对应用生成 URL?使用:
addonUrl()
// 与THINKPHP5 中的 URL()使用方法也是一样的,投票应用使用到
$.post("{:addonUrl('toVote')}",{'bm_id':id},function (res) {
layer.close(index);
layer.msg(res.msg);
})

完整的传入:应用名称/控制器/方法
如果在相同的控制器里跳转,可以只传方法名就可以了。更多可以参考 thinkphp中的 URL函数

【第四篇】开发微信应用之继承Addon类介绍

文档教程geeson 发表了文章 • 10 个评论 • 1662 次浏览 • 2017-10-09 14:02 • 来自相关话题

Api.php是与微信交互响应控制器,因此该控制器并不需要继承Addon,其它在 controller目录下的控制器,如果没有特别的情况,我们建议你都继承 Addon,因为它能够在开发帮你处理很多东西,快速开发。
如何显示模板与模板赋值?<?php
namespace addons\myDemo\controller;
use app\common\controller\Addon;

class index extends Addon
{
public function index(){
$this->assign('name','RhaPHP');
$this->fetch();
}

}经常使用到的有:public function demo()
{
dump($this->mid);//获取公众号有标识 ID
dump($this->mpInfo);//获取公众号信息
dump($this->getAaddonConfigByMp);//获取当前公众的当前应用配置信息
dump($this->addonInfoByFile);//获取当前公众的当前应用Config.php文件中的config配置项
dump($this->addonInfoByDb);//获取当前公众的当前应用安装后的数据库中的配置Config.php文件中的config配置项

}因为要更加灵活,所以控制不分前台或者后台,如果你当前控制器需要管理员才能操作的怎么办?其实也是很简单的:代码如下:class index extends Addon
{
public $adminLogin=true;//需要管理员登录才可操作本控制器
public function index()
{

$this->assign('name', 'RhaPHP');
$this->fetch();
} public $adminLogin=true;设为 true 系统认为该控制器是管理员才可以操作的。拥有业务菜单的控制器都需要此项。

如果你想把页面只限于微信里面打开:class index extends Addon
{

public $onlyWexinOpen=true;//限制需要在微信里面打开
public function index()
{
$this->assign('name', 'RhaPHP');
$this->fetch();
}


如果此应用需要微信授权登录?class index extends Addon
{
public $isWexinLogin=true;//需要微信授权登录
public function index()
{

$this->assign('name', 'RhaPHP');
$this->fetch();
}这里需要你注意一下,这里考虑到了一些没有授权登录权限的公众号。所以使用微信登录首先要到公众号-》【授权&注册】先配置好。如下图:





有网页授权登录权限的请选择系统自动注册,没有授权登录的请选择回复注册|登录。回复注册|登录是使用响应机制的。你可以设置关键词,或者自定菜单触发关键词,然后系统会以图文形式回复为登录入口。其中的跳转地址就是用户点击进入完成登录后,需要跳到的页面地址,一般是你的应用地址。这里的目录就是获取到粉丝的 openid.这里出发点是考虑到没有授权的公众号要做会员中心,用户组,优惠率,等等。

重点重点重点的来了!!!!!
这里可能有同学要骂我了?如果我很多应用都需要获取 openid啊,你这里跳转地址只有一个哇。其实我已经帮你想到这个问题的啦。按照国际惯例,没有页面授权登录的公众号的微信应用都使用了回复关键词或者自定菜单触发关键词,回复图文,然后进入该应用后系统自动的把 openid 传参到该应用的 URL中了 使用 get,或者 input()获取 openid。后台配置如下图:






还有很多比较有意思的设计逻辑。大家在使用过程自然会发现的。有任何改进或者问题欢迎大家反馈。谢谢大家
  查看全部
Api.php是与微信交互响应控制器,因此该控制器并不需要继承Addon,其它在 controller目录下的控制器,如果没有特别的情况,我们建议你都继承 Addon,因为它能够在开发帮你处理很多东西,快速开发。
如何显示模板与模板赋值?
<?php
namespace addons\myDemo\controller;
use app\common\controller\Addon;

class index extends Addon
{
public function index(){
$this->assign('name','RhaPHP');
$this->fetch();
}

}
经常使用到的有:
public function demo()
{
dump($this->mid);//获取公众号有标识 ID
dump($this->mpInfo);//获取公众号信息
dump($this->getAaddonConfigByMp);//获取当前公众的当前应用配置信息
dump($this->addonInfoByFile);//获取当前公众的当前应用Config.php文件中的config配置项
dump($this->addonInfoByDb);//获取当前公众的当前应用安装后的数据库中的配置Config.php文件中的config配置项

}
因为要更加灵活,所以控制不分前台或者后台,如果你当前控制器需要管理员才能操作的怎么办?其实也是很简单的:代码如下:
class index extends Addon
{
public $adminLogin=true;//需要管理员登录才可操作本控制器
public function index()
{

$this->assign('name', 'RhaPHP');
$this->fetch();
}
 public $adminLogin=true;设为 true 系统认为该控制器是管理员才可以操作的。拥有业务菜单的控制器都需要此项。

如果你想把页面只限于微信里面打开:
class index extends Addon
{

public $onlyWexinOpen=true;//限制需要在微信里面打开
public function index()
{
$this->assign('name', 'RhaPHP');
$this->fetch();
}


如果此应用需要微信授权登录?
class index extends Addon
{
public $isWexinLogin=true;//需要微信授权登录
public function index()
{

$this->assign('name', 'RhaPHP');
$this->fetch();
}
这里需要你注意一下,这里考虑到了一些没有授权登录权限的公众号。所以使用微信登录首先要到公众号-》【授权&注册】先配置好。如下图:

1.png

有网页授权登录权限的请选择系统自动注册,没有授权登录的请选择回复注册|登录。回复注册|登录是使用响应机制的。你可以设置关键词,或者自定菜单触发关键词,然后系统会以图文形式回复为登录入口。其中的跳转地址就是用户点击进入完成登录后,需要跳到的页面地址,一般是你的应用地址。这里的目录就是获取到粉丝的 openid.这里出发点是考虑到没有授权的公众号要做会员中心,用户组,优惠率,等等。

重点重点重点的来了!!!!!
这里可能有同学要骂我了?如果我很多应用都需要获取 openid啊,你这里跳转地址只有一个哇。其实我已经帮你想到这个问题的啦。按照国际惯例,没有页面授权登录的公众号的微信应用都使用了回复关键词或者自定菜单触发关键词,回复图文,然后进入该应用后系统自动的把 openid 传参到该应用的 URL中了 使用 get,或者 input()获取 openid。后台配置如下图:

1.png


还有很多比较有意思的设计逻辑。大家在使用过程自然会发现的。有任何改进或者问题欢迎大家反馈。谢谢大家
 

【第三篇】如何建立自己的业务逻辑处理控制层

文档教程geeson 发表了文章 • 0 个评论 • 1959 次浏览 • 2017-10-08 13:32 • 来自相关话题

可能有同学会问,比喻开发一个商城哇,我有很多业务菜单哇,有商城设置,栏目管理,产品管理,订单管理。等等。。。如何弄哇?看了第二篇文档的同学都相信都已经知道了,在 Config.php里面有一个menu数组配置项的:代码如下:'menu' => [
[
'name' => '红包记录',
'url' => 'redPack/Index/index',
'icon' => ''
],
],我这里只有一个菜单,如果你多个,就增在后台增加就可以了。如果你不了解请看第二篇:http://ask.rhaphp.com/article/8
然后在 在redPack的 controller目录下建立 Index.php控制器,然后写一个 index的方法。如下图:






蓝色框部分需要继承的,我们建议你继承!我们建议你继承!我们建议你继承!为什么?将会在第四篇讲解。
如何给模板赋值?$this->assign('值名',值);如果显示出模板? $this->fetch();//也可以自定如: $this->fetch('index')模板路径在当前应用下的 view目录中。这里是、view/inex/index。这里我还是说明一下吧。视频目录都是使用小写。不需要与控制器前面第一个字母是大写的。以 redPack为例如下图:







在这里我想说明一下:为什么我们不与其它的系统那样?表单这些都封装起来,现在咱们的应用插件中的 config那样那样??
第一点:我想减少你对系统研究时间,表单的控制你爱怎么样设计就怎么设计。
第二点:我还是想自由灵活一些吧。
不过你丫的我就是想这样啊,也行,目前只针对表单有做了处理:使用方法如下:$data= array(
[
'name' => 'keyword',
'title' => '关键词',
'type' => 'text',
'value' => '',
'placeholder' => '请输入关键词',
'tip' => '关键词哦',
],
[
'name' => 'password',
'title' => '密码',
'type' => 'password',
'value' => '',
'placeholder' => '请输入密码',
'tip' => '',
],
[
'name' => 'likes',
'title' => '喜欢谁?',
'type' => 'checkbox',
'value' => [
0 => [
'name'=>'ldh',
'title' => '刘德华',
'value' => '0',
'checked' => '0'
],
1 => [
'name'=>'fbb',
'title' => '冰冰',
'value' => '1',
'checked' => '1'
],
2 => [
'name'=>'fj',
'title' => '凤姐',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '',
],
[
'name' => 'time',
'title' => '时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'sex',
'title' => '性别',
'type' => 'radio',
'value' => [
0 => [
'title' => '男',
'value' => '0',
'checked' => '0'
],
1 => [
'title' => '女',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '如果你男与女都不是,系统认为你是条汉子。',
],
[
'name' => 'content',
'title' => '描述',
'type' => 'textarea',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myFile',
'title' => '上传文件',
'type' => 'file',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myImage',
'title' => '上传图片',
'type' => 'image',
'value' => '',
'placeholder' => '',
'tip' => '',
],

);

$this->assign('menu_list',$data);
$this->fetch('default');
  查看全部
可能有同学会问,比喻开发一个商城哇,我有很多业务菜单哇,有商城设置,栏目管理,产品管理,订单管理。等等。。。如何弄哇?看了第二篇文档的同学都相信都已经知道了,在 Config.php里面有一个menu数组配置项的:代码如下:
'menu' => [
[
'name' => '红包记录',
'url' => 'redPack/Index/index',
'icon' => ''
],
],
我这里只有一个菜单,如果你多个,就增在后台增加就可以了。如果你不了解请看第二篇:http://ask.rhaphp.com/article/8
然后在 在redPack的 controller目录下建立 Index.php控制器,然后写一个 index的方法。如下图:

1.png


蓝色框部分需要继承的,我们建议你继承!我们建议你继承!我们建议你继承!为什么?将会在第四篇讲解。
如何给模板赋值?
$this->assign('值名',值);
如果显示出模板?
 $this->fetch();//也可以自定如: $this->fetch('index')
模板路径在当前应用下的 view目录中。这里是、view/inex/index。这里我还是说明一下吧。视频目录都是使用小写。不需要与控制器前面第一个字母是大写的。以 redPack为例如下图:

1.png



在这里我想说明一下:为什么我们不与其它的系统那样?表单这些都封装起来,现在咱们的应用插件中的 config那样那样??
第一点:我想减少你对系统研究时间,表单的控制你爱怎么样设计就怎么设计。
第二点:我还是想自由灵活一些吧。
不过你丫的我就是想这样啊,也行,目前只针对表单有做了处理:使用方法如下:
$data= array(
[
'name' => 'keyword',
'title' => '关键词',
'type' => 'text',
'value' => '',
'placeholder' => '请输入关键词',
'tip' => '关键词哦',
],
[
'name' => 'password',
'title' => '密码',
'type' => 'password',
'value' => '',
'placeholder' => '请输入密码',
'tip' => '',
],
[
'name' => 'likes',
'title' => '喜欢谁?',
'type' => 'checkbox',
'value' => [
0 => [
'name'=>'ldh',
'title' => '刘德华',
'value' => '0',
'checked' => '0'
],
1 => [
'name'=>'fbb',
'title' => '冰冰',
'value' => '1',
'checked' => '1'
],
2 => [
'name'=>'fj',
'title' => '凤姐',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '',
],
[
'name' => 'time',
'title' => '时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'sex',
'title' => '性别',
'type' => 'radio',
'value' => [
0 => [
'title' => '男',
'value' => '0',
'checked' => '0'
],
1 => [
'title' => '女',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '如果你男与女都不是,系统认为你是条汉子。',
],
[
'name' => 'content',
'title' => '描述',
'type' => 'textarea',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myFile',
'title' => '上传文件',
'type' => 'file',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myImage',
'title' => '上传图片',
'type' => 'image',
'value' => '',
'placeholder' => '',
'tip' => '',
],

);

$this->assign('menu_list',$data);
$this->fetch('default');

 

【第二篇】使用RhaPHP开发微信应用之Config.php说明

文档教程geeson 发表了文章 • 0 个评论 • 2968 次浏览 • 2017-10-07 15:22 • 来自相关话题

第一篇已经说明参数作用说明,这一篇menu与config使用方法。使用上也是非常简单的,能够快速对应用插件配置建立表单。那么先看看一个完整Config.php代码:return array(
'name' => '',
'addon' => '',
'desc' => '',
'version' => '1.0',
'author' => 'Geeson',
'logo' => 'logo.jpg',
'menu_show' => '1',
'entry_url' => '',
'admin_url' => '',
'install_sql' => '',
'upgrade_sql' => '',
'menu' => [//后台菜单列表
[
'name' => '菜单1',
'url' => '应用名称/控制器/方法',
'icon' => ''
],

[ 'name' => '菜单2',
'url' => '应用名称/控制器/方法',
'icon' => ''
],


],
'config' => array(
[
'name' => 'name',
'title' => '名称',
'type' => 'text',
'value' => '',
'placeholder' => '请输入关名称',
'tip' => '这里是提示,比喻:名称请填写真实性名',
],
[
'name' => 'select',
'title' => '四大城市',
'type' => 'select',
'value' => [
0 => [
'title' => '北京',
'value' => '1',
'selected' => '1'
],
1 => [
'title' => '上海',
'value' => '2',
'selected' => '0'
],
2 => [
'title' => '广州',
'value' => '3',
'selected' => '0'
]
,
3 => [
'title' => '深圳',
'value' => '4',
'selected' => '0'
]
],
'placeholder' => '',
'tip' => '你的城市',
],
[
'name' => 'likes',
'title' => '喜欢谁?',
'type' => 'checkbox',
'value' => [
0 => [
'name'=>'ldh',
'title' => '刘德华',
'value' => '0',
'checked' => '0'
],
1 => [
'name'=>'fbb',
'title' => '冰冰',
'value' => '1',
'checked' => '1'
],
2 => [
'name'=>'fj',
'title' => '凤姐',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '',
],
[
'name' => 'time',
'title' => '时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'sex',
'title' => '性别',
'type' => 'radio',
'value' => [
0 => [
'title' => '男',
'value' => '0',
'checked' => '0'
],
1 => [
'title' => '女',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '如果你男与女都不是,系统认为你是条汉子。',
],
[
'name' => 'content',
'title' => '描述',
'type' => 'textarea',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myFile',
'title' => '上传文件',
'type' => 'file',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myImage',
'title' => '上传图片',
'type' => 'image',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myImages',
'title' => '多图上传',
'type' => 'images',
'value' => '',
'placeholder' => '',
'tip' => '',
],

)
);我们平时开发常用的,RhaPHP都已经集合好了。后台菜单相信大家一看就能懂,看看redPack中的menu 'menu' => [
[
'name' => '红包记录',
'url' => 'redPack/Index/index',
'icon' => ''
],
],进入红包应用后台,在后台的左侧就能看到这个菜单了,当然也是支持多个的。如下图:





那么再看Config表单配置项:redPack为例:'config' => array(
[
'name' => 'amount',//input 中的name值
'title' => '红包总额', //该input的名称
'type' => 'text',//input 类型
'value' => '0',// input 默认值
'placeholder' => '',
'tip' => '单位/元',
],
[
'name' => 'money',
'title' => '红包金额',
'type' => 'text',
'value' => '1',
'placeholder' => '',
'tip' => '领取红包份额,注意红包金额微信不能低于1蚊鸡(1元钱)。',
],
[
'name' => 'nick_name',
'title' => '提供方名',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '列如:绮梦科技、 RhaPHP、冰冰工作室等等。',
],
[
'name' => 'send_name',
'title' => '红包发送者名',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '例如:冰冰、努力就有希望、有钱的二狗子等等,字数尽量不要太多。',
],
[
'name' => 'wishing',
'title' => '红包祝福语',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '例如:恭喜发财、早生贵子、早日分手、你想对领取红包的人说的话。',
],
[
'name' => 'reply_msg',
'title' => '成功回复',
'type' => 'text',
'value' => '红包发放成功,请你继续关注活动,后面福利多多!',
'placeholder' => '',
'tip' => '红包发送成功,回复的消息内容。',
],
[
'name' => 'act_name',
'title' => '活动名称',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '例如:五一假日活动、三周年庆、等等。',
],
[
'name' => 'start_time',
'title' => '开始时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'end_time',
'title' => '结束时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'number_of_times',
'title' => '领取次数',
'type' => 'text',
'value' => '1',
'placeholder' => '',
'tip' => '每人领取红包次数,默认1次',
],
),那么进入应用后,在后台左侧看到,如下图:







提交表单,系统自动保存参数配置表单的值。不需要开发者写增删改查代码的。

重要的话要来了!重要的话要来了!重要的话要来了!
如果此应用已经安装后,你修改Config.php,请卸载应用重新安装才会生效。因为每一个应用可以对应多个公众号的。所有配置项需入库。
如何在应用中获取配置参数?以redPack为例:





对就是它,getAddonInfo()函数。一般不需要传参数系统自动处理获取到当前公众号的应用的配置参数。
可以dump下可以看到参数。
如何传参?请看代码:/**
* 获取应用配置信息
* @author geeson myrhzq@qq.com
* $param $addonName string //当前应用名称
* @param string $mid //公众号标识 ID
* @return array|bool|mixed
*/
function getAddonInfo($addonName = '', $mid = '')
{
if ($addonName == '' || $mid == '') {
$addonName = session('addonName');
$mid = session('mid')?session('mid'):input('mid');
}
if ($addonName == '' || $mid == '') {
exit('参数不完整:应用名称或者公众号标识不存在');
}
$addon = \think\Db::name('addons')->where(['addon' => $addonName])->find();
$addonInfo = \think\Db::name('addon_info')->where(['addon' => $addonName, 'mpid' => input('mid')])->find();
$addon['path'] = ADDON_PATH . $addonName . '/';
$addon['mp_config'] = json_decode($addonInfo['infos'], true);
$addon['common_config'] = json_decode($addon['config'], true);
unset($addon['config']);
return $addon;

}

  查看全部
第一篇已经说明参数作用说明,这一篇menu与config使用方法。使用上也是非常简单的,能够快速对应用插件配置建立表单。那么先看看一个完整Config.php代码:
return array(
'name' => '',
'addon' => '',
'desc' => '',
'version' => '1.0',
'author' => 'Geeson',
'logo' => 'logo.jpg',
'menu_show' => '1',
'entry_url' => '',
'admin_url' => '',
'install_sql' => '',
'upgrade_sql' => '',
'menu' => [//后台菜单列表
[
'name' => '菜单1',
'url' => '应用名称/控制器/方法',
'icon' => ''
],

[ 'name' => '菜单2',
'url' => '应用名称/控制器/方法',
'icon' => ''
],


],
'config' => array(
[
'name' => 'name',
'title' => '名称',
'type' => 'text',
'value' => '',
'placeholder' => '请输入关名称',
'tip' => '这里是提示,比喻:名称请填写真实性名',
],
[
'name' => 'select',
'title' => '四大城市',
'type' => 'select',
'value' => [
0 => [
'title' => '北京',
'value' => '1',
'selected' => '1'
],
1 => [
'title' => '上海',
'value' => '2',
'selected' => '0'
],
2 => [
'title' => '广州',
'value' => '3',
'selected' => '0'
]
,
3 => [
'title' => '深圳',
'value' => '4',
'selected' => '0'
]
],
'placeholder' => '',
'tip' => '你的城市',
],
[
'name' => 'likes',
'title' => '喜欢谁?',
'type' => 'checkbox',
'value' => [
0 => [
'name'=>'ldh',
'title' => '刘德华',
'value' => '0',
'checked' => '0'
],
1 => [
'name'=>'fbb',
'title' => '冰冰',
'value' => '1',
'checked' => '1'
],
2 => [
'name'=>'fj',
'title' => '凤姐',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '',
],
[
'name' => 'time',
'title' => '时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'sex',
'title' => '性别',
'type' => 'radio',
'value' => [
0 => [
'title' => '男',
'value' => '0',
'checked' => '0'
],
1 => [
'title' => '女',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '如果你男与女都不是,系统认为你是条汉子。',
],
[
'name' => 'content',
'title' => '描述',
'type' => 'textarea',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myFile',
'title' => '上传文件',
'type' => 'file',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myImage',
'title' => '上传图片',
'type' => 'image',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myImages',
'title' => '多图上传',
'type' => 'images',
'value' => '',
'placeholder' => '',
'tip' => '',
],

)
);
我们平时开发常用的,RhaPHP都已经集合好了。后台菜单相信大家一看就能懂,看看redPack中的menu
 'menu' => [
[
'name' => '红包记录',
'url' => 'redPack/Index/index',
'icon' => ''
],
],
进入红包应用后台,在后台的左侧就能看到这个菜单了,当然也是支持多个的。如下图:

QQ图片20171007145555.png

那么再看Config表单配置项:redPack为例:
'config' => array(
[
'name' => 'amount',//input 中的name值
'title' => '红包总额', //该input的名称
'type' => 'text',//input 类型
'value' => '0',// input 默认值
'placeholder' => '',
'tip' => '单位/元',
],
[
'name' => 'money',
'title' => '红包金额',
'type' => 'text',
'value' => '1',
'placeholder' => '',
'tip' => '领取红包份额,注意红包金额微信不能低于1蚊鸡(1元钱)。',
],
[
'name' => 'nick_name',
'title' => '提供方名',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '列如:绮梦科技、 RhaPHP、冰冰工作室等等。',
],
[
'name' => 'send_name',
'title' => '红包发送者名',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '例如:冰冰、努力就有希望、有钱的二狗子等等,字数尽量不要太多。',
],
[
'name' => 'wishing',
'title' => '红包祝福语',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '例如:恭喜发财、早生贵子、早日分手、你想对领取红包的人说的话。',
],
[
'name' => 'reply_msg',
'title' => '成功回复',
'type' => 'text',
'value' => '红包发放成功,请你继续关注活动,后面福利多多!',
'placeholder' => '',
'tip' => '红包发送成功,回复的消息内容。',
],
[
'name' => 'act_name',
'title' => '活动名称',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '例如:五一假日活动、三周年庆、等等。',
],
[
'name' => 'start_time',
'title' => '开始时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'end_time',
'title' => '结束时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'number_of_times',
'title' => '领取次数',
'type' => 'text',
'value' => '1',
'placeholder' => '',
'tip' => '每人领取红包次数,默认1次',
],
),
那么进入应用后,在后台左侧看到,如下图:

5B10F604-CF2C-403E-BC22-ADCDD0154E15.png



提交表单,系统自动保存参数配置表单的值。不需要开发者写增删改查代码的。

重要的话要来了!重要的话要来了!重要的话要来了!
如果此应用已经安装后,你修改Config.php,请卸载应用重新安装才会生效。因为每一个应用可以对应多个公众号的。所有配置项需入库。
如何在应用中获取配置参数?以redPack为例:

QQ图片20171007151443.png

对就是它,getAddonInfo()函数。一般不需要传参数系统自动处理获取到当前公众号的应用的配置参数。
可以dump下可以看到参数。
如何传参?请看代码:
/**
* 获取应用配置信息
* @author geeson myrhzq@qq.com
* $param $addonName string //当前应用名称
* @param string $mid //公众号标识 ID
* @return array|bool|mixed
*/
function getAddonInfo($addonName = '', $mid = '')
{
if ($addonName == '' || $mid == '') {
$addonName = session('addonName');
$mid = session('mid')?session('mid'):input('mid');
}
if ($addonName == '' || $mid == '') {
exit('参数不完整:应用名称或者公众号标识不存在');
}
$addon = \think\Db::name('addons')->where(['addon' => $addonName])->find();
$addonInfo = \think\Db::name('addon_info')->where(['addon' => $addonName, 'mpid' => input('mid')])->find();
$addon['path'] = ADDON_PATH . $addonName . '/';
$addon['mp_config'] = json_decode($addonInfo['infos'], true);
$addon['common_config'] = json_decode($addon['config'], true);
unset($addon['config']);
return $addon;

}


 

【第一篇】使用RhaPHP开发第一个微信应用,新手必看

文档教程geeson 发表了文章 • 1 个评论 • 4898 次浏览 • 2017-10-03 15:07 • 来自相关话题

       虽然使用RhaPHP,开发微信应用简单灵活的,但是我还是建议你看一看。应用执行与THINKPHP的执行也是一样的。应用插件一样有自己的 MVC,总的来说你会使用 任何的一款MVC的框架就会快速上手。如果你TP都666的话。你不用看了。直接看RhaPHP官方提供的DEMO就能上手了。
        这里以发红包的应用为例,在 addon目录下建立你的应用目录。由于我比较喜欢中国式英文,红包就叫 redPack.建议使用驼峰式命名法。列如:myApp、redPack、wexinShop等。
       
        建立好 redPack 目录后。然后再建议控制层目录 controller,model(如果需要),static(如果需要)view(如果需要),Common.php(如果需要),Config.php,install.sql(如果需要),logo.jpg  也就是说controller,Config.php,logo.jpg 这三个是必须的。如下图我建立好的目录:




如果你对目录结构不了解,请看:http://ask.rhaphp.com/article/6

因为发红包是要与微信通信和请求微信的接口的,那么在 controller目录下建立 Api.php,如下图:






命名空间:namespace addons\redPack\controller;public function message($msg = , $param = )
{
// 处理微信发来的消息内容
}message()方法是必须的,$msg微信发来的消息内容,$param是当前应用插件参数,目前参数有 mid(当前公众号标识),addon(当前插件的名称)。
这里需要注意的是,Api.php可以理解为通过回复关键词或者是事件触发的,然后微信发来消息了 Api.php才会执行。如果没有特别的情况,Api.php不用继承其它的类。那么我想看下看微信发来的消息内容是什么样的怎么办?我直接告诉你易过借火啊。(客官,对不起,想了想这个还是后面再说,我先把前面的说完。请你耐心看下去)。

        这里的common.php我需要说说。玩过框架的同学都知道,这个就是当前应用插件的独立函数库。那么这时有同学可能会想, application目录common.php里面的函数我能不能在应用插件里面使用?我拍着我的良心跟你说,当然可以使用,不用做任何的引入,而且THINKPHP的核心的东西包括vendor都可以使用,而且与 application目录下的模块用法都是一样的。有极少的不同,后面我会说到。

         下面,将重点介绍 Config.php,这文件担任着非常重要的角色。没有 Config.php等于这个应用没有生命。<?php
return array(
'name' => '红包营销',// 应用名称
'addon' => 'redPack',// 应用标识与你创建的目录必须一致的
'desc' => '有钱就任性,活动营销-红包爱怎么发就怎么发',//应用介绍
'version' => '1.0',// 版本
'author' => 'Geeson',//作者
'logo' => 'logo.jpg',//logo 与应用目录的 logo 一样的名称
'menu_show' => '1',// 系统发展今后可能用到,忽略
'entry_url' => '',// 如果这应用需要入口的,比较微信商城,那么填写入口,写法 应用名称/ 控制器/方法
// 'install_sql' => 'install.sql',// 数据库安装文件
'upgrade_sql' => 'upgrade.sql',//升级的数据库文件,如果目录存在这个文件,后台自动出现升级
'menu' => [//后台管理菜单
[
'name' => '红包记录',// 菜单名称
'url' => 'redPack/Index/index',// 菜单地址
'icon' => ''
],
],
'config' => array(// 应用配置参数
[//关于配置我会单独写一篇文章介绍的
'name' => 'amount',
'title' => '红包总额',
'type' => 'text',
'value' => '0',
'placeholder' => '',
'tip' => '单位/元',
],
[
'name' => 'money',
'title' => '红包金额',
'type' => 'text',
'value' => '1',
'placeholder' => '',
'tip' => '领取红包份额,注意红包金额微信不能低于1蚊鸡(1元钱)。',
],如果你写好参数,那么进入后台。就可以看到安装啦。如下图:






创建一个应用基本就是这样过程。如果觉得没啥惊喜,继续看第二篇。 查看全部
       虽然使用RhaPHP,开发微信应用简单灵活的,但是我还是建议你看一看。应用执行与THINKPHP的执行也是一样的。应用插件一样有自己的 MVC,总的来说你会使用 任何的一款MVC的框架就会快速上手。如果你TP都666的话。你不用看了。直接看RhaPHP官方提供的DEMO就能上手了。
        这里以发红包的应用为例,在 addon目录下建立你的应用目录。由于我比较喜欢中国式英文,红包就叫 redPack.建议使用驼峰式命名法。列如:myApp、redPack、wexinShop等。
       
        建立好 redPack 目录后。然后再建议控制层目录 controller,model(如果需要),static(如果需要)view(如果需要),Common.php(如果需要),Config.php,install.sql(如果需要),logo.jpg  也就是说controller,Config.php,logo.jpg 这三个是必须的。如下图我建立好的目录:
B3363891-AE49-4CBC-A2D3-64CBEEAACEB2.png

如果你对目录结构不了解,请看:http://ask.rhaphp.com/article/6

因为发红包是要与微信通信和请求微信的接口的,那么在 controller目录下建立 Api.php,如下图:

3B11EB35-2FF0-45CD-A8B2-5EED02AABBBC.png


命名空间:namespace addons\redPack\controller;
public function message($msg = , $param = )
{
// 处理微信发来的消息内容
}
message()方法是必须的,$msg微信发来的消息内容,$param是当前应用插件参数,目前参数有 mid(当前公众号标识),addon(当前插件的名称)。
这里需要注意的是,Api.php可以理解为通过回复关键词或者是事件触发的,然后微信发来消息了 Api.php才会执行。如果没有特别的情况,Api.php不用继承其它的类。那么我想看下看微信发来的消息内容是什么样的怎么办?我直接告诉你易过借火啊。(客官,对不起,想了想这个还是后面再说,我先把前面的说完。请你耐心看下去)。

        这里的common.php我需要说说。玩过框架的同学都知道,这个就是当前应用插件的独立函数库。那么这时有同学可能会想, application目录common.php里面的函数我能不能在应用插件里面使用?我拍着我的良心跟你说,当然可以使用,不用做任何的引入,而且THINKPHP的核心的东西包括vendor都可以使用,而且与 application目录下的模块用法都是一样的。有极少的不同,后面我会说到。

         下面,将重点介绍 Config.php,这文件担任着非常重要的角色。没有 Config.php等于这个应用没有生命。
<?php
return array(
'name' => '红包营销',// 应用名称
'addon' => 'redPack',// 应用标识与你创建的目录必须一致的
'desc' => '有钱就任性,活动营销-红包爱怎么发就怎么发',//应用介绍
'version' => '1.0',// 版本
'author' => 'Geeson',//作者
'logo' => 'logo.jpg',//logo 与应用目录的 logo 一样的名称
'menu_show' => '1',// 系统发展今后可能用到,忽略
'entry_url' => '',// 如果这应用需要入口的,比较微信商城,那么填写入口,写法 应用名称/ 控制器/方法
// 'install_sql' => 'install.sql',// 数据库安装文件
'upgrade_sql' => 'upgrade.sql',//升级的数据库文件,如果目录存在这个文件,后台自动出现升级
'menu' => [//后台管理菜单
[
'name' => '红包记录',// 菜单名称
'url' => 'redPack/Index/index',// 菜单地址
'icon' => ''
],
],
'config' => array(// 应用配置参数
[//关于配置我会单独写一篇文章介绍的
'name' => 'amount',
'title' => '红包总额',
'type' => 'text',
'value' => '0',
'placeholder' => '',
'tip' => '单位/元',
],
[
'name' => 'money',
'title' => '红包金额',
'type' => 'text',
'value' => '1',
'placeholder' => '',
'tip' => '领取红包份额,注意红包金额微信不能低于1蚊鸡(1元钱)。',
],
如果你写好参数,那么进入后台。就可以看到安装啦。如下图:

7802082F-4641-4572-9ED6-B3032D03B7E9.png


创建一个应用基本就是这样过程。如果觉得没啥惊喜,继续看第二篇。
条新动态, 点击查看
增加公众号时请正确填写你的公众号认证类型,你改为已认证类型就行了
增加公众号时请正确填写你的公众号认证类型,你改为已认证类型就行了

群发时出现问题,说此功能认证公共号才能使用,其他功能都可以

回复

反馈geeson 回复了问题 • 2 人关注 • 1 个回复 • 535 次浏览 • 2018-01-05 11:40 • 来自相关话题

开发了一个插件,如何调试?

回复

提问jinmandou 回复了问题 • 3 人关注 • 6 个回复 • 851 次浏览 • 2017-12-23 20:49 • 来自相关话题

微信前端开发

回复

提问geeson 回复了问题 • 2 人关注 • 1 个回复 • 572 次浏览 • 2017-12-19 09:24 • 来自相关话题

扩展里面使用分页

回复

提问geeson 回复了问题 • 2 人关注 • 1 个回复 • 519 次浏览 • 2017-12-02 11:44 • 来自相关话题

如何使用rhaphp快速开发微信支付应用?

文档教程geeson 发表了文章 • 29 个评论 • 3004 次浏览 • 2017-10-23 12:40 • 来自相关话题

在微信开发中,经常到会遇到微信支付与 JSSDK 的问题。可能几天都搞不定。相信大家都有遇到过吧?讲真的我第一次做支付就是这样的。那么现在福利来了。这些你都不用考虑了,只是几行代码就可以轻松实现。但是我也知道,最算什么好的事情,也是没有办法满足所有人。我已经做了一个微信支付的演示应用。这个应用功能不多作为演示与学习使用的。如果需要更多的功能,也可以自行开发。或者向在社区里提需求。那么先来看演示:(请下载附件后安装)















代码请你下载文章下的附件,如果你对应用开发还不熟悉的话,你可以花上几分钟看一下文档教程,也是快速上手的。

那么先来看代码,打开 chongZhi/controller/Deposit.php:public function topUp()
{

if (Request::instance()->isPost()) {
if ($member = getMember()) {
$money = input('post.money');
if (isset($member['openid']) && !empty($member['openid'])) {
if (empty($money) || $money < 0.09) {
ajaxMsg(0, '金额最小为0.1元');
} else {
$mid = $this->mid;
if (!$mid && $mid != $member['mpid']) {
ajaxMsg(0, '公众号标识与当前用户不匹配');
}
$model = new Payment();
if ($id = $model->addPayment($member['id'], $member['mpid'], $money, '账户充值')) {
ajaxReturn(['url' => getWxPayUrl($this->mid,['payment_id' => $id,'view'=>$this->addonRoot.'/view/common/pay.html'])]);
} else {
ajaxMsg(0, '下单失败');
}
}
} else {
ajaxMsg(0, '支付参数:openid不存在');
}
} else {
ajaxMsg(0, '用户不存在');
}
} else {
$this->assign('title', '账户充值');
$this->fetch();
}
}在以上的代码中,其实在微信支付上只有几行是重点的:$model = new Payment();
$id = $model->addPayment($member['id'], $member['mpid'], $money, '账户充值');
getWxPayUrl($this->mid,['payment_id' => $id,'view'=>$this->addonRoot.'/view/common/pay.html'])
解释一下:支付首先要有定单对吧,这个就不必多说了吧。$model->addPayment($member['id'], $member['mpid'], $money, '账户充值');        这里就是创建定单的,第一个参数就是会员 ID 号,第二个参数就是当前公众号的 ID 号。第三个就是金额了。如果是1元就填写1,一分就是0.1,经常抢红包的同学应该对这个0.1非常熟悉吧?第四个参数就是商品标题了。由于我这里是充值,那么我就写了账户充值了。如果你想知道更多的参数,看一下Payment模型。

      增加定单成功后这里会返回一个定单 ID 的。有了定单后那么就是跳转支付页面了。我这里是 AJAX 是所以我这里是返回JSON 返回前端 转跳了。getWxPayUrl()       这个函数主要解决了,微信支付授权目录的,意义重大。很多人都是遇到微信支付当前页面的URL未注册。这样的错误,其实就是支付目录错误。那么系统默认了:http://域名/service/payment/wxpay 。只要你把这个授权填写到微信官方支付后台。就可以了。
getWxPayUrl()第一个参数是公众号的 ID,第一个就是数组形式的。
['payment_id' => $id],payment_id是必须的。view如果你想自定的支付页面就填写你的模板路径。如果为空就是使用官方默认的支付页面的模板。这里相信比较多的同学还是满意这种灵活吧。

如果你在使用过程中,有任何问题,请在Rhaphp官方社区求助。必回! 查看全部
在微信开发中,经常到会遇到微信支付与 JSSDK 的问题。可能几天都搞不定。相信大家都有遇到过吧?讲真的我第一次做支付就是这样的。那么现在福利来了。这些你都不用考虑了,只是几行代码就可以轻松实现。但是我也知道,最算什么好的事情,也是没有办法满足所有人。我已经做了一个微信支付的演示应用。这个应用功能不多作为演示与学习使用的。如果需要更多的功能,也可以自行开发。或者向在社区里提需求。那么先来看演示:(请下载附件后安装)

1.png


1.png


1.png

代码请你下载文章下的附件,如果你对应用开发还不熟悉的话,你可以花上几分钟看一下文档教程,也是快速上手的。

那么先来看代码,打开 chongZhi/controller/Deposit.php:
public function topUp()
{

if (Request::instance()->isPost()) {
if ($member = getMember()) {
$money = input('post.money');
if (isset($member['openid']) && !empty($member['openid'])) {
if (empty($money) || $money < 0.09) {
ajaxMsg(0, '金额最小为0.1元');
} else {
$mid = $this->mid;
if (!$mid && $mid != $member['mpid']) {
ajaxMsg(0, '公众号标识与当前用户不匹配');
}
$model = new Payment();
if ($id = $model->addPayment($member['id'], $member['mpid'], $money, '账户充值')) {
ajaxReturn(['url' => getWxPayUrl($this->mid,['payment_id' => $id,'view'=>$this->addonRoot.'/view/common/pay.html'])]);
} else {
ajaxMsg(0, '下单失败');
}
}
} else {
ajaxMsg(0, '支付参数:openid不存在');
}
} else {
ajaxMsg(0, '用户不存在');
}
} else {
$this->assign('title', '账户充值');
$this->fetch();
}
}
在以上的代码中,其实在微信支付上只有几行是重点的:
$model = new Payment();
$id = $model->addPayment($member['id'], $member['mpid'], $money, '账户充值');
getWxPayUrl($this->mid,['payment_id' => $id,'view'=>$this->addonRoot.'/view/common/pay.html'])

解释一下:支付首先要有定单对吧,这个就不必多说了吧。
$model->addPayment($member['id'], $member['mpid'], $money, '账户充值');
        这里就是创建定单的,第一个参数就是会员 ID 号,第二个参数就是当前公众号的 ID 号。第三个就是金额了。如果是1元就填写1,一分就是0.1,经常抢红包的同学应该对这个0.1非常熟悉吧?第四个参数就是商品标题了。由于我这里是充值,那么我就写了账户充值了。如果你想知道更多的参数,看一下Payment模型。

      增加定单成功后这里会返回一个定单 ID 的。有了定单后那么就是跳转支付页面了。我这里是 AJAX 是所以我这里是返回JSON 返回前端 转跳了。
getWxPayUrl()
       这个函数主要解决了,微信支付授权目录的,意义重大。很多人都是遇到微信支付当前页面的URL未注册。这样的错误,其实就是支付目录错误。那么系统默认了:http://域名/service/payment/wxpay 。只要你把这个授权填写到微信官方支付后台。就可以了。
getWxPayUrl()第一个参数是公众号的 ID,第一个就是数组形式的。
['payment_id' => $id],payment_id是必须的。view如果你想自定的支付页面就填写你的模板路径。如果为空就是使用官方默认的支付页面的模板。这里相信比较多的同学还是满意这种灵活吧。

如果你在使用过程中,有任何问题,请在Rhaphp官方社区求助。必回!

【第六篇】微信开发应用之Api.php介绍

文档教程geeson 发表了文章 • 5 个评论 • 2280 次浏览 • 2017-10-11 12:42 • 来自相关话题

在微信开发的第一篇有说明了Api.php:http://ask.rhaphp.com/article/7
在这一篇主要介绍与微信如何交互与通信的,这里我创建是一个名称 myDemo的应用作为演示。目录文件如下图:





如果你对目录不了解请回头回文档,创建好之后,然后系统的后台进入此演示应用,在响应中设置关键词,当然也可以在自动回复中增加关键词然后选择演示应用,两者可选。你觉得那个方便使用那个。关键词设为:rhaphp,如下图:





也可以在自动回复中可以设置的,设置完成后可以看到,如下图:





粉丝触发关键词如何回复文本?很简单的代码如下:public function message($msg = [], $param = [])
{
replyText('二狗,你好!你触发了myDemo');
}在公众号输入rhaphp后,效果如下图:





如何看到微信发送的消息?public function message($msg = [], $param = [])
{
replyText(json_encode($msg));
}因为$msg是数据来的,文本方式回复那么我们要把$msg转成json。效果如下图:






当然还可以回复其它,图文消息,图片消息,视频消息等,我在介绍函数文档会说明。 查看全部
在微信开发的第一篇有说明了Api.php:http://ask.rhaphp.com/article/7
在这一篇主要介绍与微信如何交互与通信的,这里我创建是一个名称 myDemo的应用作为演示。目录文件如下图:

1.png

如果你对目录不了解请回头回文档,创建好之后,然后系统的后台进入此演示应用,在响应中设置关键词,当然也可以在自动回复中增加关键词然后选择演示应用,两者可选。你觉得那个方便使用那个。关键词设为:rhaphp,如下图:

1.png

也可以在自动回复中可以设置的,设置完成后可以看到,如下图:

1.png

粉丝触发关键词如何回复文本?很简单的代码如下:
public function message($msg = [], $param = [])
{
replyText('二狗,你好!你触发了myDemo');
}
在公众号输入rhaphp后,效果如下图:

1.png

如何看到微信发送的消息?
public function message($msg = [], $param = [])
{
replyText(json_encode($msg));
}
因为$msg是数据来的,文本方式回复那么我们要把$msg转成json。效果如下图:


1.png

当然还可以回复其它,图文消息,图片消息,视频消息等,我在介绍函数文档会说明。

【第五篇】 RhaPHP微信应用开发之视图view

文档教程geeson 发表了文章 • 0 个评论 • 1902 次浏览 • 2017-10-10 13:08 • 来自相关话题

应用的视图是支持模板的继承,从官方提供的投票的应用中有使用到,如下图:




因为开发使用得最多的就是模板继承,在使用上也是比较简单与好用的。如果有同学从来都没有没有接触过,建议你去看一下 THINKPHP5文档中模板继承。如果你想按着老套路的当然也是可以的,但是我建议你要跟上流行的节奏。

如何引入应用下的 static里面的资源?如我要引入 static/css/style.css 代码如下:{CSS href="__ADDONSTATIC__/css/style.css" /}__ADDONSTATIC__也是自动的识别当前应用的路径。

如何使用微信的JSSDK?代码如下: {:hook('Jssdk')}当你使用此行为后,并需要你再去配置 JSSDK 任何的东西,系统已经本身已经配置好了,只要你使用了{:hook('Jssdk')}系统已经为你做好了一切。如果报错的话,(签名错误呀,URL不合Fa呀)请不要尝试在系统找原因,只要填写相应的参数是正确的,公众号配置是正确的,那么系统99%是正常的。

投票应用中的代码,如下图:





若配置成功,那么你就可以在 wx.ready中使用你需要的接口了。

使用上传组件:{:hook('Upload',['type'=>'image','name'=>'cover'])}如果你需要传入值:{:hook('Upload',['type'=>'image','name'=>'input name的名称','value'=>'路径'])}多图上传:{:hook('Upload',['type'=>'images','name'=>$v.name,'value'=>$v.value])}需要使用媒体库的话:{:hook('Upload',['type'=>'images','name'=>$v.name,'material'=>true,'value'=>$v.value])}上传文件:{:hook('Upload',['type'=>'file','name'=>$v.name,'bt_title'=>'选择文件','value'=>$v.value])}如何对应用生成 URL?使用:addonUrl()
// 与THINKPHP5 中的 URL()使用方法也是一样的,投票应用使用到
$.post("{:addonUrl('toVote')}",{'bm_id':id},function (res) {
layer.close(index);
layer.msg(res.msg);
})
完整的传入:应用名称/控制器/方法
如果在相同的控制器里跳转,可以只传方法名就可以了。更多可以参考 thinkphp中的 URL函数 查看全部
应用的视图是支持模板的继承,从官方提供的投票的应用中有使用到,如下图:
1.png

因为开发使用得最多的就是模板继承,在使用上也是比较简单与好用的。如果有同学从来都没有没有接触过,建议你去看一下 THINKPHP5文档中模板继承。如果你想按着老套路的当然也是可以的,但是我建议你要跟上流行的节奏。

如何引入应用下的 static里面的资源?如我要引入 static/css/style.css 代码如下:
{CSS href="__ADDONSTATIC__/css/style.css" /}
__ADDONSTATIC__也是自动的识别当前应用的路径。

如何使用微信的JSSDK?代码如下:
 {:hook('Jssdk')}
当你使用此行为后,并需要你再去配置 JSSDK 任何的东西,系统已经本身已经配置好了,只要你使用了{:hook('Jssdk')}系统已经为你做好了一切。如果报错的话,(签名错误呀,URL不合Fa呀)请不要尝试在系统找原因,只要填写相应的参数是正确的,公众号配置是正确的,那么系统99%是正常的。

投票应用中的代码,如下图

1.png

若配置成功,那么你就可以在 wx.ready中使用你需要的接口了。

使用上传组件:
{:hook('Upload',['type'=>'image','name'=>'cover'])}
如果你需要传入值:
{:hook('Upload',['type'=>'image','name'=>'input name的名称','value'=>'路径'])}
多图上传:
{:hook('Upload',['type'=>'images','name'=>$v.name,'value'=>$v.value])}
需要使用媒体库的话:
{:hook('Upload',['type'=>'images','name'=>$v.name,'material'=>true,'value'=>$v.value])}
上传文件:
{:hook('Upload',['type'=>'file','name'=>$v.name,'bt_title'=>'选择文件','value'=>$v.value])}
如何对应用生成 URL?使用:
addonUrl()
// 与THINKPHP5 中的 URL()使用方法也是一样的,投票应用使用到
$.post("{:addonUrl('toVote')}",{'bm_id':id},function (res) {
layer.close(index);
layer.msg(res.msg);
})

完整的传入:应用名称/控制器/方法
如果在相同的控制器里跳转,可以只传方法名就可以了。更多可以参考 thinkphp中的 URL函数

【第四篇】开发微信应用之继承Addon类介绍

文档教程geeson 发表了文章 • 10 个评论 • 1662 次浏览 • 2017-10-09 14:02 • 来自相关话题

Api.php是与微信交互响应控制器,因此该控制器并不需要继承Addon,其它在 controller目录下的控制器,如果没有特别的情况,我们建议你都继承 Addon,因为它能够在开发帮你处理很多东西,快速开发。
如何显示模板与模板赋值?<?php
namespace addons\myDemo\controller;
use app\common\controller\Addon;

class index extends Addon
{
public function index(){
$this->assign('name','RhaPHP');
$this->fetch();
}

}经常使用到的有:public function demo()
{
dump($this->mid);//获取公众号有标识 ID
dump($this->mpInfo);//获取公众号信息
dump($this->getAaddonConfigByMp);//获取当前公众的当前应用配置信息
dump($this->addonInfoByFile);//获取当前公众的当前应用Config.php文件中的config配置项
dump($this->addonInfoByDb);//获取当前公众的当前应用安装后的数据库中的配置Config.php文件中的config配置项

}因为要更加灵活,所以控制不分前台或者后台,如果你当前控制器需要管理员才能操作的怎么办?其实也是很简单的:代码如下:class index extends Addon
{
public $adminLogin=true;//需要管理员登录才可操作本控制器
public function index()
{

$this->assign('name', 'RhaPHP');
$this->fetch();
} public $adminLogin=true;设为 true 系统认为该控制器是管理员才可以操作的。拥有业务菜单的控制器都需要此项。

如果你想把页面只限于微信里面打开:class index extends Addon
{

public $onlyWexinOpen=true;//限制需要在微信里面打开
public function index()
{
$this->assign('name', 'RhaPHP');
$this->fetch();
}


如果此应用需要微信授权登录?class index extends Addon
{
public $isWexinLogin=true;//需要微信授权登录
public function index()
{

$this->assign('name', 'RhaPHP');
$this->fetch();
}这里需要你注意一下,这里考虑到了一些没有授权登录权限的公众号。所以使用微信登录首先要到公众号-》【授权&注册】先配置好。如下图:





有网页授权登录权限的请选择系统自动注册,没有授权登录的请选择回复注册|登录。回复注册|登录是使用响应机制的。你可以设置关键词,或者自定菜单触发关键词,然后系统会以图文形式回复为登录入口。其中的跳转地址就是用户点击进入完成登录后,需要跳到的页面地址,一般是你的应用地址。这里的目录就是获取到粉丝的 openid.这里出发点是考虑到没有授权的公众号要做会员中心,用户组,优惠率,等等。

重点重点重点的来了!!!!!
这里可能有同学要骂我了?如果我很多应用都需要获取 openid啊,你这里跳转地址只有一个哇。其实我已经帮你想到这个问题的啦。按照国际惯例,没有页面授权登录的公众号的微信应用都使用了回复关键词或者自定菜单触发关键词,回复图文,然后进入该应用后系统自动的把 openid 传参到该应用的 URL中了 使用 get,或者 input()获取 openid。后台配置如下图:






还有很多比较有意思的设计逻辑。大家在使用过程自然会发现的。有任何改进或者问题欢迎大家反馈。谢谢大家
  查看全部
Api.php是与微信交互响应控制器,因此该控制器并不需要继承Addon,其它在 controller目录下的控制器,如果没有特别的情况,我们建议你都继承 Addon,因为它能够在开发帮你处理很多东西,快速开发。
如何显示模板与模板赋值?
<?php
namespace addons\myDemo\controller;
use app\common\controller\Addon;

class index extends Addon
{
public function index(){
$this->assign('name','RhaPHP');
$this->fetch();
}

}
经常使用到的有:
public function demo()
{
dump($this->mid);//获取公众号有标识 ID
dump($this->mpInfo);//获取公众号信息
dump($this->getAaddonConfigByMp);//获取当前公众的当前应用配置信息
dump($this->addonInfoByFile);//获取当前公众的当前应用Config.php文件中的config配置项
dump($this->addonInfoByDb);//获取当前公众的当前应用安装后的数据库中的配置Config.php文件中的config配置项

}
因为要更加灵活,所以控制不分前台或者后台,如果你当前控制器需要管理员才能操作的怎么办?其实也是很简单的:代码如下:
class index extends Addon
{
public $adminLogin=true;//需要管理员登录才可操作本控制器
public function index()
{

$this->assign('name', 'RhaPHP');
$this->fetch();
}
 public $adminLogin=true;设为 true 系统认为该控制器是管理员才可以操作的。拥有业务菜单的控制器都需要此项。

如果你想把页面只限于微信里面打开:
class index extends Addon
{

public $onlyWexinOpen=true;//限制需要在微信里面打开
public function index()
{
$this->assign('name', 'RhaPHP');
$this->fetch();
}


如果此应用需要微信授权登录?
class index extends Addon
{
public $isWexinLogin=true;//需要微信授权登录
public function index()
{

$this->assign('name', 'RhaPHP');
$this->fetch();
}
这里需要你注意一下,这里考虑到了一些没有授权登录权限的公众号。所以使用微信登录首先要到公众号-》【授权&注册】先配置好。如下图:

1.png

有网页授权登录权限的请选择系统自动注册,没有授权登录的请选择回复注册|登录。回复注册|登录是使用响应机制的。你可以设置关键词,或者自定菜单触发关键词,然后系统会以图文形式回复为登录入口。其中的跳转地址就是用户点击进入完成登录后,需要跳到的页面地址,一般是你的应用地址。这里的目录就是获取到粉丝的 openid.这里出发点是考虑到没有授权的公众号要做会员中心,用户组,优惠率,等等。

重点重点重点的来了!!!!!
这里可能有同学要骂我了?如果我很多应用都需要获取 openid啊,你这里跳转地址只有一个哇。其实我已经帮你想到这个问题的啦。按照国际惯例,没有页面授权登录的公众号的微信应用都使用了回复关键词或者自定菜单触发关键词,回复图文,然后进入该应用后系统自动的把 openid 传参到该应用的 URL中了 使用 get,或者 input()获取 openid。后台配置如下图:

1.png


还有很多比较有意思的设计逻辑。大家在使用过程自然会发现的。有任何改进或者问题欢迎大家反馈。谢谢大家
 

【第三篇】如何建立自己的业务逻辑处理控制层

文档教程geeson 发表了文章 • 0 个评论 • 1959 次浏览 • 2017-10-08 13:32 • 来自相关话题

可能有同学会问,比喻开发一个商城哇,我有很多业务菜单哇,有商城设置,栏目管理,产品管理,订单管理。等等。。。如何弄哇?看了第二篇文档的同学都相信都已经知道了,在 Config.php里面有一个menu数组配置项的:代码如下:'menu' => [
[
'name' => '红包记录',
'url' => 'redPack/Index/index',
'icon' => ''
],
],我这里只有一个菜单,如果你多个,就增在后台增加就可以了。如果你不了解请看第二篇:http://ask.rhaphp.com/article/8
然后在 在redPack的 controller目录下建立 Index.php控制器,然后写一个 index的方法。如下图:






蓝色框部分需要继承的,我们建议你继承!我们建议你继承!我们建议你继承!为什么?将会在第四篇讲解。
如何给模板赋值?$this->assign('值名',值);如果显示出模板? $this->fetch();//也可以自定如: $this->fetch('index')模板路径在当前应用下的 view目录中。这里是、view/inex/index。这里我还是说明一下吧。视频目录都是使用小写。不需要与控制器前面第一个字母是大写的。以 redPack为例如下图:







在这里我想说明一下:为什么我们不与其它的系统那样?表单这些都封装起来,现在咱们的应用插件中的 config那样那样??
第一点:我想减少你对系统研究时间,表单的控制你爱怎么样设计就怎么设计。
第二点:我还是想自由灵活一些吧。
不过你丫的我就是想这样啊,也行,目前只针对表单有做了处理:使用方法如下:$data= array(
[
'name' => 'keyword',
'title' => '关键词',
'type' => 'text',
'value' => '',
'placeholder' => '请输入关键词',
'tip' => '关键词哦',
],
[
'name' => 'password',
'title' => '密码',
'type' => 'password',
'value' => '',
'placeholder' => '请输入密码',
'tip' => '',
],
[
'name' => 'likes',
'title' => '喜欢谁?',
'type' => 'checkbox',
'value' => [
0 => [
'name'=>'ldh',
'title' => '刘德华',
'value' => '0',
'checked' => '0'
],
1 => [
'name'=>'fbb',
'title' => '冰冰',
'value' => '1',
'checked' => '1'
],
2 => [
'name'=>'fj',
'title' => '凤姐',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '',
],
[
'name' => 'time',
'title' => '时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'sex',
'title' => '性别',
'type' => 'radio',
'value' => [
0 => [
'title' => '男',
'value' => '0',
'checked' => '0'
],
1 => [
'title' => '女',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '如果你男与女都不是,系统认为你是条汉子。',
],
[
'name' => 'content',
'title' => '描述',
'type' => 'textarea',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myFile',
'title' => '上传文件',
'type' => 'file',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myImage',
'title' => '上传图片',
'type' => 'image',
'value' => '',
'placeholder' => '',
'tip' => '',
],

);

$this->assign('menu_list',$data);
$this->fetch('default');
  查看全部
可能有同学会问,比喻开发一个商城哇,我有很多业务菜单哇,有商城设置,栏目管理,产品管理,订单管理。等等。。。如何弄哇?看了第二篇文档的同学都相信都已经知道了,在 Config.php里面有一个menu数组配置项的:代码如下:
'menu' => [
[
'name' => '红包记录',
'url' => 'redPack/Index/index',
'icon' => ''
],
],
我这里只有一个菜单,如果你多个,就增在后台增加就可以了。如果你不了解请看第二篇:http://ask.rhaphp.com/article/8
然后在 在redPack的 controller目录下建立 Index.php控制器,然后写一个 index的方法。如下图:

1.png


蓝色框部分需要继承的,我们建议你继承!我们建议你继承!我们建议你继承!为什么?将会在第四篇讲解。
如何给模板赋值?
$this->assign('值名',值);
如果显示出模板?
 $this->fetch();//也可以自定如: $this->fetch('index')
模板路径在当前应用下的 view目录中。这里是、view/inex/index。这里我还是说明一下吧。视频目录都是使用小写。不需要与控制器前面第一个字母是大写的。以 redPack为例如下图:

1.png



在这里我想说明一下:为什么我们不与其它的系统那样?表单这些都封装起来,现在咱们的应用插件中的 config那样那样??
第一点:我想减少你对系统研究时间,表单的控制你爱怎么样设计就怎么设计。
第二点:我还是想自由灵活一些吧。
不过你丫的我就是想这样啊,也行,目前只针对表单有做了处理:使用方法如下:
$data= array(
[
'name' => 'keyword',
'title' => '关键词',
'type' => 'text',
'value' => '',
'placeholder' => '请输入关键词',
'tip' => '关键词哦',
],
[
'name' => 'password',
'title' => '密码',
'type' => 'password',
'value' => '',
'placeholder' => '请输入密码',
'tip' => '',
],
[
'name' => 'likes',
'title' => '喜欢谁?',
'type' => 'checkbox',
'value' => [
0 => [
'name'=>'ldh',
'title' => '刘德华',
'value' => '0',
'checked' => '0'
],
1 => [
'name'=>'fbb',
'title' => '冰冰',
'value' => '1',
'checked' => '1'
],
2 => [
'name'=>'fj',
'title' => '凤姐',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '',
],
[
'name' => 'time',
'title' => '时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'sex',
'title' => '性别',
'type' => 'radio',
'value' => [
0 => [
'title' => '男',
'value' => '0',
'checked' => '0'
],
1 => [
'title' => '女',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '如果你男与女都不是,系统认为你是条汉子。',
],
[
'name' => 'content',
'title' => '描述',
'type' => 'textarea',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myFile',
'title' => '上传文件',
'type' => 'file',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myImage',
'title' => '上传图片',
'type' => 'image',
'value' => '',
'placeholder' => '',
'tip' => '',
],

);

$this->assign('menu_list',$data);
$this->fetch('default');

 

【第二篇】使用RhaPHP开发微信应用之Config.php说明

文档教程geeson 发表了文章 • 0 个评论 • 2968 次浏览 • 2017-10-07 15:22 • 来自相关话题

第一篇已经说明参数作用说明,这一篇menu与config使用方法。使用上也是非常简单的,能够快速对应用插件配置建立表单。那么先看看一个完整Config.php代码:return array(
'name' => '',
'addon' => '',
'desc' => '',
'version' => '1.0',
'author' => 'Geeson',
'logo' => 'logo.jpg',
'menu_show' => '1',
'entry_url' => '',
'admin_url' => '',
'install_sql' => '',
'upgrade_sql' => '',
'menu' => [//后台菜单列表
[
'name' => '菜单1',
'url' => '应用名称/控制器/方法',
'icon' => ''
],

[ 'name' => '菜单2',
'url' => '应用名称/控制器/方法',
'icon' => ''
],


],
'config' => array(
[
'name' => 'name',
'title' => '名称',
'type' => 'text',
'value' => '',
'placeholder' => '请输入关名称',
'tip' => '这里是提示,比喻:名称请填写真实性名',
],
[
'name' => 'select',
'title' => '四大城市',
'type' => 'select',
'value' => [
0 => [
'title' => '北京',
'value' => '1',
'selected' => '1'
],
1 => [
'title' => '上海',
'value' => '2',
'selected' => '0'
],
2 => [
'title' => '广州',
'value' => '3',
'selected' => '0'
]
,
3 => [
'title' => '深圳',
'value' => '4',
'selected' => '0'
]
],
'placeholder' => '',
'tip' => '你的城市',
],
[
'name' => 'likes',
'title' => '喜欢谁?',
'type' => 'checkbox',
'value' => [
0 => [
'name'=>'ldh',
'title' => '刘德华',
'value' => '0',
'checked' => '0'
],
1 => [
'name'=>'fbb',
'title' => '冰冰',
'value' => '1',
'checked' => '1'
],
2 => [
'name'=>'fj',
'title' => '凤姐',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '',
],
[
'name' => 'time',
'title' => '时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'sex',
'title' => '性别',
'type' => 'radio',
'value' => [
0 => [
'title' => '男',
'value' => '0',
'checked' => '0'
],
1 => [
'title' => '女',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '如果你男与女都不是,系统认为你是条汉子。',
],
[
'name' => 'content',
'title' => '描述',
'type' => 'textarea',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myFile',
'title' => '上传文件',
'type' => 'file',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myImage',
'title' => '上传图片',
'type' => 'image',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myImages',
'title' => '多图上传',
'type' => 'images',
'value' => '',
'placeholder' => '',
'tip' => '',
],

)
);我们平时开发常用的,RhaPHP都已经集合好了。后台菜单相信大家一看就能懂,看看redPack中的menu 'menu' => [
[
'name' => '红包记录',
'url' => 'redPack/Index/index',
'icon' => ''
],
],进入红包应用后台,在后台的左侧就能看到这个菜单了,当然也是支持多个的。如下图:





那么再看Config表单配置项:redPack为例:'config' => array(
[
'name' => 'amount',//input 中的name值
'title' => '红包总额', //该input的名称
'type' => 'text',//input 类型
'value' => '0',// input 默认值
'placeholder' => '',
'tip' => '单位/元',
],
[
'name' => 'money',
'title' => '红包金额',
'type' => 'text',
'value' => '1',
'placeholder' => '',
'tip' => '领取红包份额,注意红包金额微信不能低于1蚊鸡(1元钱)。',
],
[
'name' => 'nick_name',
'title' => '提供方名',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '列如:绮梦科技、 RhaPHP、冰冰工作室等等。',
],
[
'name' => 'send_name',
'title' => '红包发送者名',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '例如:冰冰、努力就有希望、有钱的二狗子等等,字数尽量不要太多。',
],
[
'name' => 'wishing',
'title' => '红包祝福语',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '例如:恭喜发财、早生贵子、早日分手、你想对领取红包的人说的话。',
],
[
'name' => 'reply_msg',
'title' => '成功回复',
'type' => 'text',
'value' => '红包发放成功,请你继续关注活动,后面福利多多!',
'placeholder' => '',
'tip' => '红包发送成功,回复的消息内容。',
],
[
'name' => 'act_name',
'title' => '活动名称',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '例如:五一假日活动、三周年庆、等等。',
],
[
'name' => 'start_time',
'title' => '开始时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'end_time',
'title' => '结束时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'number_of_times',
'title' => '领取次数',
'type' => 'text',
'value' => '1',
'placeholder' => '',
'tip' => '每人领取红包次数,默认1次',
],
),那么进入应用后,在后台左侧看到,如下图:







提交表单,系统自动保存参数配置表单的值。不需要开发者写增删改查代码的。

重要的话要来了!重要的话要来了!重要的话要来了!
如果此应用已经安装后,你修改Config.php,请卸载应用重新安装才会生效。因为每一个应用可以对应多个公众号的。所有配置项需入库。
如何在应用中获取配置参数?以redPack为例:





对就是它,getAddonInfo()函数。一般不需要传参数系统自动处理获取到当前公众号的应用的配置参数。
可以dump下可以看到参数。
如何传参?请看代码:/**
* 获取应用配置信息
* @author geeson myrhzq@qq.com
* $param $addonName string //当前应用名称
* @param string $mid //公众号标识 ID
* @return array|bool|mixed
*/
function getAddonInfo($addonName = '', $mid = '')
{
if ($addonName == '' || $mid == '') {
$addonName = session('addonName');
$mid = session('mid')?session('mid'):input('mid');
}
if ($addonName == '' || $mid == '') {
exit('参数不完整:应用名称或者公众号标识不存在');
}
$addon = \think\Db::name('addons')->where(['addon' => $addonName])->find();
$addonInfo = \think\Db::name('addon_info')->where(['addon' => $addonName, 'mpid' => input('mid')])->find();
$addon['path'] = ADDON_PATH . $addonName . '/';
$addon['mp_config'] = json_decode($addonInfo['infos'], true);
$addon['common_config'] = json_decode($addon['config'], true);
unset($addon['config']);
return $addon;

}

  查看全部
第一篇已经说明参数作用说明,这一篇menu与config使用方法。使用上也是非常简单的,能够快速对应用插件配置建立表单。那么先看看一个完整Config.php代码:
return array(
'name' => '',
'addon' => '',
'desc' => '',
'version' => '1.0',
'author' => 'Geeson',
'logo' => 'logo.jpg',
'menu_show' => '1',
'entry_url' => '',
'admin_url' => '',
'install_sql' => '',
'upgrade_sql' => '',
'menu' => [//后台菜单列表
[
'name' => '菜单1',
'url' => '应用名称/控制器/方法',
'icon' => ''
],

[ 'name' => '菜单2',
'url' => '应用名称/控制器/方法',
'icon' => ''
],


],
'config' => array(
[
'name' => 'name',
'title' => '名称',
'type' => 'text',
'value' => '',
'placeholder' => '请输入关名称',
'tip' => '这里是提示,比喻:名称请填写真实性名',
],
[
'name' => 'select',
'title' => '四大城市',
'type' => 'select',
'value' => [
0 => [
'title' => '北京',
'value' => '1',
'selected' => '1'
],
1 => [
'title' => '上海',
'value' => '2',
'selected' => '0'
],
2 => [
'title' => '广州',
'value' => '3',
'selected' => '0'
]
,
3 => [
'title' => '深圳',
'value' => '4',
'selected' => '0'
]
],
'placeholder' => '',
'tip' => '你的城市',
],
[
'name' => 'likes',
'title' => '喜欢谁?',
'type' => 'checkbox',
'value' => [
0 => [
'name'=>'ldh',
'title' => '刘德华',
'value' => '0',
'checked' => '0'
],
1 => [
'name'=>'fbb',
'title' => '冰冰',
'value' => '1',
'checked' => '1'
],
2 => [
'name'=>'fj',
'title' => '凤姐',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '',
],
[
'name' => 'time',
'title' => '时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'sex',
'title' => '性别',
'type' => 'radio',
'value' => [
0 => [
'title' => '男',
'value' => '0',
'checked' => '0'
],
1 => [
'title' => '女',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '如果你男与女都不是,系统认为你是条汉子。',
],
[
'name' => 'content',
'title' => '描述',
'type' => 'textarea',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myFile',
'title' => '上传文件',
'type' => 'file',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myImage',
'title' => '上传图片',
'type' => 'image',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myImages',
'title' => '多图上传',
'type' => 'images',
'value' => '',
'placeholder' => '',
'tip' => '',
],

)
);
我们平时开发常用的,RhaPHP都已经集合好了。后台菜单相信大家一看就能懂,看看redPack中的menu
 'menu' => [
[
'name' => '红包记录',
'url' => 'redPack/Index/index',
'icon' => ''
],
],
进入红包应用后台,在后台的左侧就能看到这个菜单了,当然也是支持多个的。如下图:

QQ图片20171007145555.png

那么再看Config表单配置项:redPack为例:
'config' => array(
[
'name' => 'amount',//input 中的name值
'title' => '红包总额', //该input的名称
'type' => 'text',//input 类型
'value' => '0',// input 默认值
'placeholder' => '',
'tip' => '单位/元',
],
[
'name' => 'money',
'title' => '红包金额',
'type' => 'text',
'value' => '1',
'placeholder' => '',
'tip' => '领取红包份额,注意红包金额微信不能低于1蚊鸡(1元钱)。',
],
[
'name' => 'nick_name',
'title' => '提供方名',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '列如:绮梦科技、 RhaPHP、冰冰工作室等等。',
],
[
'name' => 'send_name',
'title' => '红包发送者名',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '例如:冰冰、努力就有希望、有钱的二狗子等等,字数尽量不要太多。',
],
[
'name' => 'wishing',
'title' => '红包祝福语',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '例如:恭喜发财、早生贵子、早日分手、你想对领取红包的人说的话。',
],
[
'name' => 'reply_msg',
'title' => '成功回复',
'type' => 'text',
'value' => '红包发放成功,请你继续关注活动,后面福利多多!',
'placeholder' => '',
'tip' => '红包发送成功,回复的消息内容。',
],
[
'name' => 'act_name',
'title' => '活动名称',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '例如:五一假日活动、三周年庆、等等。',
],
[
'name' => 'start_time',
'title' => '开始时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'end_time',
'title' => '结束时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'number_of_times',
'title' => '领取次数',
'type' => 'text',
'value' => '1',
'placeholder' => '',
'tip' => '每人领取红包次数,默认1次',
],
),
那么进入应用后,在后台左侧看到,如下图:

5B10F604-CF2C-403E-BC22-ADCDD0154E15.png



提交表单,系统自动保存参数配置表单的值。不需要开发者写增删改查代码的。

重要的话要来了!重要的话要来了!重要的话要来了!
如果此应用已经安装后,你修改Config.php,请卸载应用重新安装才会生效。因为每一个应用可以对应多个公众号的。所有配置项需入库。
如何在应用中获取配置参数?以redPack为例:

QQ图片20171007151443.png

对就是它,getAddonInfo()函数。一般不需要传参数系统自动处理获取到当前公众号的应用的配置参数。
可以dump下可以看到参数。
如何传参?请看代码:
/**
* 获取应用配置信息
* @author geeson myrhzq@qq.com
* $param $addonName string //当前应用名称
* @param string $mid //公众号标识 ID
* @return array|bool|mixed
*/
function getAddonInfo($addonName = '', $mid = '')
{
if ($addonName == '' || $mid == '') {
$addonName = session('addonName');
$mid = session('mid')?session('mid'):input('mid');
}
if ($addonName == '' || $mid == '') {
exit('参数不完整:应用名称或者公众号标识不存在');
}
$addon = \think\Db::name('addons')->where(['addon' => $addonName])->find();
$addonInfo = \think\Db::name('addon_info')->where(['addon' => $addonName, 'mpid' => input('mid')])->find();
$addon['path'] = ADDON_PATH . $addonName . '/';
$addon['mp_config'] = json_decode($addonInfo['infos'], true);
$addon['common_config'] = json_decode($addon['config'], true);
unset($addon['config']);
return $addon;

}


 

【第一篇】使用RhaPHP开发第一个微信应用,新手必看

文档教程geeson 发表了文章 • 1 个评论 • 4898 次浏览 • 2017-10-03 15:07 • 来自相关话题

       虽然使用RhaPHP,开发微信应用简单灵活的,但是我还是建议你看一看。应用执行与THINKPHP的执行也是一样的。应用插件一样有自己的 MVC,总的来说你会使用 任何的一款MVC的框架就会快速上手。如果你TP都666的话。你不用看了。直接看RhaPHP官方提供的DEMO就能上手了。
        这里以发红包的应用为例,在 addon目录下建立你的应用目录。由于我比较喜欢中国式英文,红包就叫 redPack.建议使用驼峰式命名法。列如:myApp、redPack、wexinShop等。
       
        建立好 redPack 目录后。然后再建议控制层目录 controller,model(如果需要),static(如果需要)view(如果需要),Common.php(如果需要),Config.php,install.sql(如果需要),logo.jpg  也就是说controller,Config.php,logo.jpg 这三个是必须的。如下图我建立好的目录:




如果你对目录结构不了解,请看:http://ask.rhaphp.com/article/6

因为发红包是要与微信通信和请求微信的接口的,那么在 controller目录下建立 Api.php,如下图:






命名空间:namespace addons\redPack\controller;public function message($msg = , $param = )
{
// 处理微信发来的消息内容
}message()方法是必须的,$msg微信发来的消息内容,$param是当前应用插件参数,目前参数有 mid(当前公众号标识),addon(当前插件的名称)。
这里需要注意的是,Api.php可以理解为通过回复关键词或者是事件触发的,然后微信发来消息了 Api.php才会执行。如果没有特别的情况,Api.php不用继承其它的类。那么我想看下看微信发来的消息内容是什么样的怎么办?我直接告诉你易过借火啊。(客官,对不起,想了想这个还是后面再说,我先把前面的说完。请你耐心看下去)。

        这里的common.php我需要说说。玩过框架的同学都知道,这个就是当前应用插件的独立函数库。那么这时有同学可能会想, application目录common.php里面的函数我能不能在应用插件里面使用?我拍着我的良心跟你说,当然可以使用,不用做任何的引入,而且THINKPHP的核心的东西包括vendor都可以使用,而且与 application目录下的模块用法都是一样的。有极少的不同,后面我会说到。

         下面,将重点介绍 Config.php,这文件担任着非常重要的角色。没有 Config.php等于这个应用没有生命。<?php
return array(
'name' => '红包营销',// 应用名称
'addon' => 'redPack',// 应用标识与你创建的目录必须一致的
'desc' => '有钱就任性,活动营销-红包爱怎么发就怎么发',//应用介绍
'version' => '1.0',// 版本
'author' => 'Geeson',//作者
'logo' => 'logo.jpg',//logo 与应用目录的 logo 一样的名称
'menu_show' => '1',// 系统发展今后可能用到,忽略
'entry_url' => '',// 如果这应用需要入口的,比较微信商城,那么填写入口,写法 应用名称/ 控制器/方法
// 'install_sql' => 'install.sql',// 数据库安装文件
'upgrade_sql' => 'upgrade.sql',//升级的数据库文件,如果目录存在这个文件,后台自动出现升级
'menu' => [//后台管理菜单
[
'name' => '红包记录',// 菜单名称
'url' => 'redPack/Index/index',// 菜单地址
'icon' => ''
],
],
'config' => array(// 应用配置参数
[//关于配置我会单独写一篇文章介绍的
'name' => 'amount',
'title' => '红包总额',
'type' => 'text',
'value' => '0',
'placeholder' => '',
'tip' => '单位/元',
],
[
'name' => 'money',
'title' => '红包金额',
'type' => 'text',
'value' => '1',
'placeholder' => '',
'tip' => '领取红包份额,注意红包金额微信不能低于1蚊鸡(1元钱)。',
],如果你写好参数,那么进入后台。就可以看到安装啦。如下图:






创建一个应用基本就是这样过程。如果觉得没啥惊喜,继续看第二篇。 查看全部
       虽然使用RhaPHP,开发微信应用简单灵活的,但是我还是建议你看一看。应用执行与THINKPHP的执行也是一样的。应用插件一样有自己的 MVC,总的来说你会使用 任何的一款MVC的框架就会快速上手。如果你TP都666的话。你不用看了。直接看RhaPHP官方提供的DEMO就能上手了。
        这里以发红包的应用为例,在 addon目录下建立你的应用目录。由于我比较喜欢中国式英文,红包就叫 redPack.建议使用驼峰式命名法。列如:myApp、redPack、wexinShop等。
       
        建立好 redPack 目录后。然后再建议控制层目录 controller,model(如果需要),static(如果需要)view(如果需要),Common.php(如果需要),Config.php,install.sql(如果需要),logo.jpg  也就是说controller,Config.php,logo.jpg 这三个是必须的。如下图我建立好的目录:
B3363891-AE49-4CBC-A2D3-64CBEEAACEB2.png

如果你对目录结构不了解,请看:http://ask.rhaphp.com/article/6

因为发红包是要与微信通信和请求微信的接口的,那么在 controller目录下建立 Api.php,如下图:

3B11EB35-2FF0-45CD-A8B2-5EED02AABBBC.png


命名空间:namespace addons\redPack\controller;
public function message($msg = , $param = )
{
// 处理微信发来的消息内容
}
message()方法是必须的,$msg微信发来的消息内容,$param是当前应用插件参数,目前参数有 mid(当前公众号标识),addon(当前插件的名称)。
这里需要注意的是,Api.php可以理解为通过回复关键词或者是事件触发的,然后微信发来消息了 Api.php才会执行。如果没有特别的情况,Api.php不用继承其它的类。那么我想看下看微信发来的消息内容是什么样的怎么办?我直接告诉你易过借火啊。(客官,对不起,想了想这个还是后面再说,我先把前面的说完。请你耐心看下去)。

        这里的common.php我需要说说。玩过框架的同学都知道,这个就是当前应用插件的独立函数库。那么这时有同学可能会想, application目录common.php里面的函数我能不能在应用插件里面使用?我拍着我的良心跟你说,当然可以使用,不用做任何的引入,而且THINKPHP的核心的东西包括vendor都可以使用,而且与 application目录下的模块用法都是一样的。有极少的不同,后面我会说到。

         下面,将重点介绍 Config.php,这文件担任着非常重要的角色。没有 Config.php等于这个应用没有生命。
<?php
return array(
'name' => '红包营销',// 应用名称
'addon' => 'redPack',// 应用标识与你创建的目录必须一致的
'desc' => '有钱就任性,活动营销-红包爱怎么发就怎么发',//应用介绍
'version' => '1.0',// 版本
'author' => 'Geeson',//作者
'logo' => 'logo.jpg',//logo 与应用目录的 logo 一样的名称
'menu_show' => '1',// 系统发展今后可能用到,忽略
'entry_url' => '',// 如果这应用需要入口的,比较微信商城,那么填写入口,写法 应用名称/ 控制器/方法
// 'install_sql' => 'install.sql',// 数据库安装文件
'upgrade_sql' => 'upgrade.sql',//升级的数据库文件,如果目录存在这个文件,后台自动出现升级
'menu' => [//后台管理菜单
[
'name' => '红包记录',// 菜单名称
'url' => 'redPack/Index/index',// 菜单地址
'icon' => ''
],
],
'config' => array(// 应用配置参数
[//关于配置我会单独写一篇文章介绍的
'name' => 'amount',
'title' => '红包总额',
'type' => 'text',
'value' => '0',
'placeholder' => '',
'tip' => '单位/元',
],
[
'name' => 'money',
'title' => '红包金额',
'type' => 'text',
'value' => '1',
'placeholder' => '',
'tip' => '领取红包份额,注意红包金额微信不能低于1蚊鸡(1元钱)。',
],
如果你写好参数,那么进入后台。就可以看到安装啦。如下图:

7802082F-4641-4572-9ED6-B3032D03B7E9.png


创建一个应用基本就是这样过程。如果觉得没啥惊喜,继续看第二篇。