codecamp

如何找到要修改的文件

要想对然之进行修改,就必须知道对应的代码在什么地方。在了解了然之的目录结构之后,我们来看下然之的请求是如何对应到代码的。

一、control方法的定位

control方法是每一个页面的入口,顺藤摸瓜,让我们先来看个例子: crm/ order-browse-assignedTo.html 或者是crm/index.php?m=order&f=browse&mode=assignedTo。这里面有什么玄机呢?让我们来揭晓。

crm/ order-browse- assignedTo.html,表示是访问 crm应用 order这个模块的 browse方法,传递的第一个参数为assignedTo,访问的页面类型是 html。同样, crm/index.php?m=order&f=browse&mode=assignedTo, crm代表应用名 ,m代表了模块名称, f代表了方法名称,后面的则是参数列表。那么我们就可以对应然之的源代码,app/crm/order/control.php中的browse方法: 

二、control方法里面的调用

ok,我们现在已经知道了入口的函数在什么地方,我们来跟到里面看看吧。

$this->order, 表示的是调用order模块的model对象,那么它对应的文件在什么地方呢?聪明的你,应该已经猜到了吧。在app/crm/order/model.phpthis->loadmoel('order', 'crm')->xxx,表示加载crm应用order模块的model对象,它对应的文件在app/crm/order/model.php$this->app->loadClass('pager'),表示加载一个lib类,它对应的文件则在lib/pager/pager.class.php$this->lang->order->xxx,它的定义在app/crm/order/lang/zh-cn.php。后面的zh-cn根据当前用户的语言而定。

后来看模块文件。$this->display()之后,调用的是view目录下面和当前方法同名的模板文件。比如order的browse方法,它对应的模板文件是app/order/view/browse.html.php

三、应用

然之app目录下的几个目录分别对应CRM、OA、CASH、TEAM应用,sys下是公用模块。



然之的目录结构
数据库结构
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }