导航共享

优质
小牛编辑
132浏览
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
];