rde / menutree
菜单树
0.2.13
2015-06-03 07:14 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: ~4.3
This package is not auto-updated.
Last update: 2024-09-14 17:00:49 UTC
README
安装:
{ "require": { "rde/menutree": "0.2.*@dev" } }
- PHP环境需要pdo_sqlite pdo_mysql (默认驱动)
- 将db_schema文件夹中的sql文件部署到database。
- 默认数据载体sqlite (/src/storage/menudata.slite3) 中的数据格式(id, item_id, parent_id, depth, left, right, url_name, url),其中item_id为不可重复的唯一键,可以是字符串。如果不小心写入了重复的键,在MenuData获取数据时也会忽略重复的字符串。id为一般流水号,其他字段可填可不填。
- 唯一需要注意的是,如果此数据为树状数据的顶层,其parent_id需要填入字符串'null'。
- 也可以分别实现IMenuProvider & IUserProvider来使用自己的存储体。
用法:
/* 假設原始資料為: array( array( "id" => 1, "item_id" => key_1, "parent_id" => 'null' "depth" => 0, "left" => 1, "right" => 2, "url_name" => test1, "url" => contorller1/method1 ), array( "id" => 2, "item_id" => key_2, "parent_id" => key_1, "depth" => 1, "left" => 3, "right" => 4, "url_name" => test2, "url" => contorller2/method2 ), ); */ //可自行實作使用者選單,只要最後給MenuData的過濾資料格式如下面範例即可 $pdo_mysql = new PDO('mysql:host=127.0.0.1;dbname=account','root','xxxx'); $user = new User($pdo_mysql); //find_menu() 會用array回傳 每個item_id ex array(key_1,key_2...) //建構參數pdo 可選填,沒填預設會讀取src/storage/menudata.sqlite3 裡的資料 $menuOrigin = new MenuData(); $insertData = array( array( "id" => 1, "item_id" => key_3, "parent_id" => 'key_1' "depth" => 0, "left" => 1, "right" => 2, "url_name" => test3, "url" => contorller3/method3 ), ); /* 結果為 array( array( "id" => 1, "item_id" => key_1, "parent_id" => 'null' "depth" => 0, "left" => 1, "right" => 2, "url_name" => test1, "url" => contorller1/method1 ), array( "id" => 1, "item_id" => key_3, "parent_id" => 'key_1' "depth" => 0, "left" => 1, "right" => 2, "url_name" => test3, "url" => contorller3/method3 ), array( "id" => 2, "item_id" => key_2, "parent_id" => key_1, "depth" => 1, "left" => 3, "right" => 4, "url_name" => test2, "url" => contorller2/method2 ), ); */ $menuOrigin->setFilter($user->find_menu())->insert(1, $insertData)->get(); //建構選單樹狀物件 $menutree = new MenuTree($menuOrigin); //可拿到完整的樹狀結構 $tree = $menutree->get(); /* 最後get回來的資料格式如以下: array( array( "deep" => 0, "self" => array( "id" => 1, "item_id" => key_1, "parent_id" => 'null' "depth" => 0, "left" => 1, "right" => 2, "url_name" => test1, "url" => contorller1/method1 ), "children" => array( array( "deep" => 2, "self" => array( "id" => 2, "item_id" => key_2, "parent_id" => key_1, "depth" => 1, "left" => 3, "right" => 4, "url_name" => test2, "url" => contorller2/method2 ), "children" => array(), ) ) ) ) */ $bool = $menutree->check("controller/method"); //可判斷此uri是否符合權限 會回傳 true false
许可
Composer遵循MIT许可协议 - 详细信息请查看LICENSE文件