第一步:
訪問URL
http://www.fastadmin.cc/admin/mydir/test/index?addtabs=1
對應的方法是admin模塊,controller文件夾下的mydir文件夾下面的Test.php控制器,Test.php里面的index方法。但是打開Test.php卻沒有index方法,那就看Test類的父類Backend類,可是Backend類也沒有,但是Backend有一句代碼
load_trait('library/traits/Backend');
打開application/admin/library/traits/Backend.php,找到了。
/** * 查看 */ public function index() { //設置過濾方法 $this->request->filter(['strip_tags', 'htmlspecialchars']); if ($this->request->isAjax()) { //如果發送的來源是Selectpage,則轉發到Selectpage if ($this->request->request('pkey_name')) // 疑問1:pkey_name是什么 { return $this->selectpage(); // 疑問2:selectpage方法是干什么的 } list($where, $sort, $order, $offset, $limit) = $this->buildparams(); // 疑問3: buildparams方法是干嘛的? $total = $this->model ->where($where) ->order($sort, $order) // 疑問4:order怎么有兩個參數,是如何工作的? ->count(); $list = $this->model ->where($where) ->order($sort, $order) ->limit($offset, $limit) ->select(); $result = array("total" => $total, "rows" => $list); return json($result); } return $this->view->fetch(); // 訪問url的時候,就有數據了,那明顯是執行了 if ($this->request->isAjax())這個分支了啊,可是get怎么會是ajax呢?難道是頁面加載了自動發送ajax請求?
}
第二步:url訪問index方法,顯然先執行的是 return $this->view->fetch(); // fetch 的作用是:獲取和解析模板內容 用於輸出
那么,接下去就是獲取index方法對應的admin/view/mydir/index.html這個模板了
<div class="panel panel-default panel-intro"> {:build_heading()} <div class="panel-body"> <div id="myTabContent" class="tab-content"> <div class="tab-pane fade active in" id="one"> <div class="widget-body no-padding"> <div id="toolbar" class="toolbar"> {:build_toolbar()} <div class="dropdown btn-group"> <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a> <ul class="dropdown-menu text-left" role="menu"> <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li> <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li> </ul> </div> </div> <table id="table" class="table table-striped table-bordered table-hover" width="100%"> </table> </div> </div> </div> </div> </div>
獲取到了模板內容,接下去就是解析了。需要解析的只有四個:
{:build_heading()}
{:build_toolbar()}
{:__('More')}
{:__('Set to normal')}
{:__('Set to hidden')}