本項目是使用的fastadmin自帶的樹形分類,直接拿過來使用的,就會出現以下問題:
1.後臺分類列表頁面會出現未編譯的 符號
2.編輯頁面會出現顯示的分類對不上,而且結構混亂
首先,我們先解決比較簡單的第一個問題,這裏放兩種解決方案:
第一:直接在對應的分類js裏面,添加escape:false,
這樣列表頁面的特殊符號就沒有了;
第二:在樹形類裏面將 ;
換成其他不需要轉義的符號,比如–之類的;樹形類的文件位置在extend/fast/Tree.php
;
其次,我們再解決編輯頁面顯示分類對不上以及結構混亂的問題:
添加add頁面是正常顯示的,爲了不影響add頁面,我們在對應的controller下面新建一個方法,用於編輯頁面調用
默認的是index
方法,我們新建一個idnex2
方法,代碼如下:
/**
* 查看
*/
public function index2()
{
//設置過濾方法
$this->request->filter(['strip_tags']);
if ($this->request->isAjax()) {
$search = $this->request->request("search");
$type = $this->request->request("type");
$keyValue = $this->request->request("keyValue",'');
$keyField = $this->request->request("keyField");
if($keyField=='id' && $keyValue){
$list=db('itemclass')->where('id',$keyValue)->select();
$total = count($list);
$result = array("total" => $total, "rows" => $list);
return json($result);
}
//構造父類select列表選項數據
$list = [];
foreach ($this->categorylist as $k => $v) {
if ($search) {
if (stripos($v['name'], $search) !== false) {
$list[] = $v;
}
} else {
$list = $this->categorylist;
}
}
$total = count($list);
$result = array("total" => $total, "rows" => $list);
return json($result);
}
return $this->view->fetch();
}
然後再對應的edit頁面調用此方法即可
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Class_id')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-class_id" data-rule="required" data-source="class/index2" class="form-control selectpage" name="row[class_id]" type="text" value="{$row.class_id|htmlentities}">
</div>
</div>
這樣編輯頁面就可以顯示正確的分類,且分類樣式呈現樹形結構。