1. 程式人生 > >laravel關於產品分類的說說說

laravel關於產品分類的說說說

prim category name else if private date 樹形結構 use 選項

1、產品分類的數據表結構設計

不管有多少級分類,分類表中只要有以下幾個字段即可,

id(分類的id號,不管幾級分類都有自己一個唯一的id號),

name(分類的名稱),

parentid(分類的上一級id名稱,如果為一級分類,則此處值為0),

type(這個字段選填,代表當前分類名所屬的等級,有這個字段可更快的判斷分類名屬於幾級分類名稱)

2、laravel中全部分類的展示:

1)、在前端頁面最上面加上如下代碼

<?php
use App\Http\Common\PHPTree;
?>

2)在App\Http\Common\文件夾下面建立PHPTree.php文件,文件內容如下:

<?php
/**
* @name PHPTree
* @author crazymus < QQ:291445576 >
* @des PHP生成樹形結構,無限多級分類
* @version 1.2.0
* @Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
* @updated 2015-08-26
*/
namespace App\Http\Common;

class PHPTree{

protected static $config = array(
/* 主鍵 */
‘primary_key‘ => ‘id‘,
/* 父鍵 */
‘parent_key‘ => ‘parentid‘,
/* 展開屬性 */
‘expanded_key‘ => ‘expanded‘,
/* 葉子節點屬性 */
‘leaf_key‘ => ‘leaf‘,
/* 孩子節點屬性 */
‘children_key‘ => ‘children‘,
/* 是否展開子節點 */
‘expanded‘ => false
);

/* 結果集 */
protected static $result = array();

/* 層次暫存 */
protected static $level = array();
/**
* @name 生成樹形結構
* @param array 二維數組
* @return mixed 多維數組
*/
public static function makeTree($data,$options=array() ){
$dataset = self::buildData($data,$options);
$r = self::makeTreeCore(0,$dataset,‘normal‘);
return $r;
}

/* 生成線性結構, 便於HTML輸出, 參數同上 */
public static function makeTreeForHtml($data,$options=array()){

$dataset = self::buildData($data,$options);
$r = self::makeTreeCore(0,$dataset,‘linear‘);
return $r;
}

/* 格式化數據, 私有方法 */
private static function buildData($data,$options){
$config = array_merge(self::$config,$options);
self::$config = $config;
extract($config);

$r = array();
foreach($data as $item){
$id = $item[$primary_key];
$parentid = $item[$parent_key];
$r[$parentid][$id] = $item;
}

return $r;
}

/* 生成樹核心, 私有方法 */
private static function makeTreeCore($index,$data,$type=‘linear‘)
{
extract(self::$config);
foreach($data[$index] as $id=>$item)
{
if($type==‘normal‘){
if(isset($data[$id]))
{
$item[$expanded_key]= self::$config[‘expanded‘];
$item[$children_key]= self::makeTreeCore($id,$data,$type);
}
else
{
$item[$leaf_key]= true;
}
$r[] = $item;
}else if($type==‘linear‘){
$parentid = $item[$parent_key];
self::$level[$id] = $index==0?0:self::$level[$parentid]+1;
$item[‘level‘] = self::$level[$id];
self::$result[] = $item;
if(isset($data[$id])){
self::makeTreeCore($id,$data,$type);
}

$r = self::$result;
}
}
return $r;
}
}


?>

3)在後臺php頁面,獲得分類表裏的全部信息:

$category = Category::all()->toArray();

4)在模板.blade.php頁面輸出全部分類名稱:

<?php
$r = PHPTree::makeTreeForHtml($category);
echo ‘<select name="articlecolumn" class="select">‘;
echo ‘<option value="0">全部分類</option>‘;
foreach($r as $item){
echo "<option value=".$item[‘id‘].">";
echo str_repeat(‘......‘,$item[‘level‘]);
echo $item[‘name‘];
echo ‘</option>‘;
}
echo ‘</select>‘;
?>

5)實現基本展現後,js獲得選中select的選項值:

var articlecolumn=$(‘select[name=articlecolumn]‘).val();

就是這麽簡單,你學會了嗎?

laravel關於產品分類的說說說