导航共享
优质
小牛编辑
137浏览
2023-12-01
每个应用都会有自己的导航,为了让每个应用都能很方便共享自己的导航数据,我们需要一种良好的应用间导航共享机制,而这种机制就是程序内部可以访问的内部 api.
导航配置文件
导航配置文件就是用于配置应用有哪些导航api,此文件会返回一个数组,数组的子项就一个应用内部 api 链接的地址,但不用带应用名; 导航配置文件是位于应用根目录下的nav.php
文件,以 portal 应用为例,就是 app/portal/nav.php
文件 内容如下:
<?php
return [
[
'name' => '文章分类', //导航数据源名称
'api' => "Category/nav"
]
];
导航数据源
导航数据源的 api 就是一个应用内部链接,它位于应用的 api 层,现在我们来创建一个导航 api,拿上面的Category/nav
举例: 1.在app/portal
目录下创建api
目录 2.在app/portal/api
目录下创建文件CategoryApi.php
,内容如下:
<?php
namespace app\portal\api;
use app\portal\model\PortalCategoryModel;
class CategoryApi
{
/**
* 分类列表 用于导航选择
* @return array
*/
public function nav()
{
$portalCategoryModel = new PortalCategoryModel();
$where = [];
$categories = $portalCategoryModel->where($where)->select();
$return = [
'rule' => [
'action' => 'portal/List/index',
'param' => [
'id' => 'id'
]
],//url规则
'items' => $categories //每个子项item里必须包括id,name,如果想表示层级关系请加上 parent_id
];
return $return;
}
}
每个导航 api返回的数据格式必须按如下格式:
[
'rule' => [ // url生成规则
'action' => 'portal/List/index', //url生成对应操作路径
'param' => [ // url 生成的参数
'id' => 'id' // url生成参数1(键值 id 为 url 参数,值 id 表示url 参数的值来源于下面 items 里 item 的 id 属性)
]
],//url规则
'items' => $categories //每个子项item里必须包括id,name,如果想表示层级关系请加上 parent_id
];
添加完导航数据源,并增加导航共享配置文件后,就可以导航菜单添加或编辑时看到你的共享出来的导航数据了。