如何找到要修改的文件
要想对然之进行修改,就必须知道对应的代码在什么地方。在了解了然之的目录结构之后,我们来看下然之的请求是如何对应到代码的。
一、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下是公用模块。
更多建议: