第一篇:fastadmin的頁面是如何生成的?


第一步:

訪問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')}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM