@@ -0,0 +1,35 @@ | |||
<?php | |||
namespace app\admin\controller; | |||
use app\common\controller\Backend; | |||
/** | |||
* 问答 | |||
* | |||
* @icon fa fa-circle-o | |||
*/ | |||
class Qa extends Backend | |||
{ | |||
/** | |||
* Qa模型对象 | |||
* @var \app\admin\model\Qa | |||
*/ | |||
protected $model = null; | |||
public function _initialize() | |||
{ | |||
parent::_initialize(); | |||
$this->model = new \app\admin\model\Qa; | |||
} | |||
/** | |||
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法 | |||
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑 | |||
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改 | |||
*/ | |||
} |
@@ -0,0 +1,6 @@ | |||
<?php | |||
return [ | |||
'Question' => '问题', | |||
'Answer' => '回答' | |||
]; |
@@ -0,0 +1,40 @@ | |||
<?php | |||
namespace app\admin\model; | |||
use think\Model; | |||
class Qa extends Model | |||
{ | |||
// 表名 | |||
protected $name = 'qa'; | |||
// 自动写入时间戳字段 | |||
protected $autoWriteTimestamp = false; | |||
// 定义时间戳字段名 | |||
protected $createTime = false; | |||
protected $updateTime = false; | |||
protected $deleteTime = false; | |||
// 追加属性 | |||
protected $append = [ | |||
]; | |||
} |
@@ -0,0 +1,27 @@ | |||
<?php | |||
namespace app\admin\validate; | |||
use think\Validate; | |||
class Qa extends Validate | |||
{ | |||
/** | |||
* 验证规则 | |||
*/ | |||
protected $rule = [ | |||
]; | |||
/** | |||
* 提示消息 | |||
*/ | |||
protected $message = [ | |||
]; | |||
/** | |||
* 验证场景 | |||
*/ | |||
protected $scene = [ | |||
'add' => [], | |||
'edit' => [], | |||
]; | |||
} |
@@ -0,0 +1,22 @@ | |||
<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action=""> | |||
<div class="form-group"> | |||
<label class="control-label col-xs-12 col-sm-2">{:__('Question')}:</label> | |||
<div class="col-xs-12 col-sm-8"> | |||
<input id="c-question" data-rule="required" class="form-control" name="row[question]" type="text" value=""> | |||
</div> | |||
</div> | |||
<div class="form-group"> | |||
<label class="control-label col-xs-12 col-sm-2">{:__('Answer')}:</label> | |||
<div class="col-xs-12 col-sm-8"> | |||
<textarea id="c-answer" data-rule="required" class="form-control" name="row[answer]"></textarea> | |||
</div> | |||
</div> | |||
<div class="form-group layer-footer"> | |||
<label class="control-label col-xs-12 col-sm-2"></label> | |||
<div class="col-xs-12 col-sm-8"> | |||
<button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button> | |||
<button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button> | |||
</div> | |||
</div> | |||
</form> |
@@ -0,0 +1,22 @@ | |||
<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action=""> | |||
<div class="form-group"> | |||
<label class="control-label col-xs-12 col-sm-2">{:__('Question')}:</label> | |||
<div class="col-xs-12 col-sm-8"> | |||
<input id="c-question" data-rule="required" class="form-control" name="row[question]" type="text" value="{$row.question|htmlentities}"> | |||
</div> | |||
</div> | |||
<div class="form-group"> | |||
<label class="control-label col-xs-12 col-sm-2">{:__('Answer')}:</label> | |||
<div class="col-xs-12 col-sm-8"> | |||
<textarea id="c-answer" data-rule="required" class="form-control" name="row[answer]">{$row.answer|htmlentities}</textarea> | |||
</div> | |||
</div> | |||
<div class="form-group layer-footer"> | |||
<label class="control-label col-xs-12 col-sm-2"></label> | |||
<div class="col-xs-12 col-sm-8"> | |||
<button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button> | |||
<button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button> | |||
</div> | |||
</div> | |||
</form> |
@@ -0,0 +1,35 @@ | |||
<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"> | |||
<a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a> | |||
<a href="javascript:;" class="btn btn-success btn-add {:$auth->check('qa/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a> | |||
<a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('qa/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a> | |||
<a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('qa/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a> | |||
<a href="javascript:;" class="btn btn-danger btn-import {:$auth->check('qa/import')?'':'hide'}" title="{:__('Import')}" id="btn-import-file" data-url="ajax/upload" data-mimetype="csv,xls,xlsx" data-multiple="false"><i class="fa fa-upload"></i> {:__('Import')}</a> | |||
<div class="dropdown btn-group {:$auth->check('qa/multi')?'':'hide'}"> | |||
<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 table-nowrap" | |||
data-operate-edit="{:$auth->check('qa/edit')}" | |||
data-operate-del="{:$auth->check('qa/del')}" | |||
width="100%"> | |||
</table> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</div> |
@@ -0,0 +1,51 @@ | |||
define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { | |||
var Controller = { | |||
index: function () { | |||
// 初始化表格参数配置 | |||
Table.api.init({ | |||
extend: { | |||
index_url: 'qa/index' + location.search, | |||
add_url: 'qa/add', | |||
edit_url: 'qa/edit', | |||
del_url: 'qa/del', | |||
multi_url: 'qa/multi', | |||
table: 'qa', | |||
} | |||
}); | |||
var table = $("#table"); | |||
// 初始化表格 | |||
table.bootstrapTable({ | |||
url: $.fn.bootstrapTable.defaults.extend.index_url, | |||
pk: 'id', | |||
sortName: 'id', | |||
columns: [ | |||
[ | |||
{checkbox: true}, | |||
{field: 'id', title: __('Id')}, | |||
{field: 'question', title: __('Question')}, | |||
{field: 'answer', title: __('Answer')}, | |||
{field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} | |||
] | |||
] | |||
}); | |||
// 为表格绑定事件 | |||
Table.api.bindevent(table); | |||
}, | |||
add: function () { | |||
Controller.api.bindevent(); | |||
}, | |||
edit: function () { | |||
Controller.api.bindevent(); | |||
}, | |||
api: { | |||
bindevent: function () { | |||
Form.api.bindevent($("form[role=form]")); | |||
} | |||
} | |||
}; | |||
return Controller; | |||
}); |