model/member.inc.php
namespace tfproject\model; use tfphp\model\tfmodel; use tfphp\tfphp; class member extends tfmodel { public function __construct(tfphp $tfphp){ parent::__construct($tfphp); $this->setDAOOneToOne("member", ["members", "member_profiles"], [["mapping"=>["mId"=>"mId"]]]); } }
view/tfview/template/admin/member.html
搜索表单
<div class="row search-form crud-form-search"> <div class="col8"> <form> <div class="form-group"> <span class="form-inline">关键字: </span> <div class="form-inline s-form-inline-auto"><input type="text" name="q" class="form-control" /></div> <div class="form-inline"><button class="btn btn-apply">查询</button> </div> </div> </form> </div> <div class="col2" style="text-align: right;"> <button class="btn btn-apply" data-action="add">创建</button> </div> </div>
数据列表
<div class="table-box crud-table"> <table class="table"> <thead> <tr> <th data-field="mId" data-sortable data-sort-field="mId" data-sort-value="desc">ID</th> <th data-field="mName" data-sortable data-sort-field="mName">用户名</th> <th data-field="mStat" data-sortable data-sort-field="mStat">状态</th> <th data-field="crtDT">注册时间</th> <th data-field="logDT">登录时间</th> <th data-field="__opers__"></th> </tr> </thead> <tbody> </tbody> </table> <div class="pagination form-group pg-form-group"> <div class="form-inline"> </div> <div class="form-inline pg-form-inline-right"> </div> </div> </div>
脚本
$(function(){ var tableDataUrlSearchQuery = "", $table = null, $searchForm = null, $actionFormDialog = null; var showActionForm = function(action){ $(".member-box").hide(); $("." + action + "-form").show(); }, hideActionForm = function(){ $(".action-form").hide(); $(".member-box").show(); }, formOnProcessSuccess = function(data){ if(data.errcode !== 0){ this.form.tftips({text: data.errmsg}); this.form.find('[name="'+data.name+'"]').focus(); } else{ $table.refresh(); if($actionFormDialog) $actionFormDialog.hide(); else hideActionForm(); } }, formOnProcessError = function(xhr, status, error){ this.form.tftips({text: error}); }, formOnPostValidateError = function(rule){ this.form.tftips({text: rule.errmsg}); this.form.find('[name="'+rule.name+'"]').focus(); }, attachDataActions = function(){ $("[data-action]").unbind().click(function(){ dataAction = $(this).attr("data-action"); switch(dataAction){ } }); }, attachDataRowActions = function(){ $("[data-row-action]").unbind().click(function(e){ e.stopImmediatePropagation(); dataRowId = $(this).attr("data-row-id"); dataRowAction = $(this).attr("data-row-action"); $.get("<% URL('api/admin/member/') %>" + dataRowId, function(data){ if(data){ switch (dataRowAction){ } } }); }); }, driveTable = function(){ $table = $(".member-box .table-box").tftable({ onMakeDataUrl: function(data){ return "<% URL('api/admin/member') %>?pn=" + data.pn + "&sorts=" + data.sorts + tableDataUrlSearchQuery; }, onProcessData: function(data){ for(var i=0;i<data.data.length;i++){ data.data[i].__opers__ = ""; } return data; }, onEmptyTableData: function(data){ console.log(data); $tbody = this.table.find("tbody"); $tbody.find("tr").remove(); $tbody.html("<tr><td colspan='6' style='text-align: center;'>未查询到符合条件的信息</td></tr>"); }, afterProcessSuccess: function(){ attachDataRowActions(); }, textPageInfo: "共有记录{total}条,每页显示{percentpage}条,分为{totalpage}页", textPageButtonHome: "第一页", textPageButtonPrevious: "上页", textPageButtonNext: "下页", textPageButtonLast: "最后页" }); $searchForm = $(".member-box .search-form").tfform({ onSubmitForm: function(){ tableDataUrlSearchQuery = "&" + $(this.form).serialize(); $table.refresh(); return false; } }); }; driveTable(); attachDataActions(); });
页面
controller/admin/member.inc.php
namespace tfproject\controller\admin; use tfphp\system\tfpage; class member extends tfpage { protected function onLoad(){ } }
接口
controller/api/admin/member.inc.php
namespace tfproject\controller\api\admin; use tfphp\model\tfcrudBuilder; use tfphp\system\tfrestfulAPI; use tfproject\model\member; class member extends tfrestfulAPI { protected function onGET(){ // parameters validate $resourceValue = $this->tfphp->getRequest()->getResourceValue(); if($resourceValue){ // build $tfcrudBuilder = new tfcrudBuilder($this->tfphp); $ret = $tfcrudBuilder->buildDetail((new member($this->tfphp))->getO2O("member"), [ "mId"=>$resourceValue ]); $this->JSONData($ret); } else{ // make sql $gets = $this->tfphp->getRequest()->get(); $myQ = $gets->get("q"); $myStat = $gets->get("stat"); $pageSize = 10; $sql = "select * from tfart_members"; $ws = ""; $params = []; if($myQ){ $ws .= " and mName like '%". $myQ. "%'"; } if($myStat){ $ws .= " and mStat = @int"; $params[] = $myStat; } if($ws) $sql .= " where ". substr($ws, 5); // build $tfcrudBuilder = new tfcrudBuilder($this->tfphp); $ret = $tfcrudBuilder->buildList((new member($this->tfphp))->getO2O("member"), $sql, $params, [ "ps"=>$pageSize ]); $this->JSONData($ret); } } }