微擎:app是MVC架构时,将封面链接导向指定的do,op,ac

xiaoxiao2021-02-28  27

1.首先要在模块的封面管理处,添加触发关键字

此时你会发现,直接的URL,只会是这样:

http://127.0.0.1/WeEngine0.7Release/app/index.php?i=4&c=entry&do=management&m=XXX

因为是app端的方法,所以会进入到site.php里面的doMobileHomecover()方法里面去。

下面是site.php里面的方法:

public function __call($name, $arguments) { global $_W; $isWeb = stripos($name, 'doWeb') === 0; $isMobile = stripos($name, 'doMobile') === 0; if($isWeb || $isMobile) { $dir = IA_ROOT . '/addons/' . $this->modulename . '/'; if($isWeb) { $dir .= 'web/'; $controller = strtolower(substr($name, 5)); } if($isMobile) { $dir .= 'app/'; $controller = strtolower(substr($name, 8)); } $file = $dir . 'index.php'; if(file_exists($file)) { require $file; exit; } } trigger_error("访问的方法 {$name} 不存在.", E_USER_WARNING); return null; } public function doMobileHomecover(){ global $_W; $dir = IA_ROOT . '/addons/' . $this->modulename . '/'; $dir .= 'app/'; $file = $dir . 'index.php'; if(file_exists($file)) { require $file; exit; } //print_r( $_W['openid']); }

一般来说,都是通过调用__call方法来进入某个链接,但这里需要通过封面链接来进入,所以需要写doMobileHomecover()这个方法。但doMobileHomecover()里面也只是为了进入到app\index.php。

2.在app\index.php里面设置默认的controller

<?php define('IN_MOBILE', true); global $_W,$_GPC; wl_load()->model('member'); $this->check_in_weixin();//自己写的检查是否在微信中,不知道对不对 $controller = $_GPC['do']; $action = $_GPC['ac']; if (empty($controller) || empty($action)) {//绑定到封面 $_GPC['do'] = $controller = 'scangenerate'; $_GPC['ac'] = $action = 'scan'; } $file = TG_APP . 'controller/'.$controller.'/'.$action.'.ctrl.php'; if (!file_exists($file)) { header("Location: index.php?i={$_W['uniacid']}&c=entry&do=scangenerate&ac=scan&m=vittor_homework_cabinet"); exit; } require $file;

通过默认设置do与ac,假如二者有一个有一个为空时,就进入到你想要进入的controller里面去,即XXX.ctrl.php。

3.在XXX.ctrl.php里面默认设置op

$ops = array('这里面是可能的op'); $op = in_array($_GPC['op'], $ops) ? $_GPC['op'] : 'cover';

4.通过以上步骤,就能确定下来:

do:scangenerate

ac:scan

op:cover

而management只是为了最开始的导向

转载请注明原文地址: https://www.6miu.com/read-1600234.html

最新回复(0)