zoukankan      html  css  js  c++  java
  • TP6框架--EasyAdmin学习笔记:定义路由

    这是我写的学习EasyAdmin的第二章,这一章我给大家分享下如何定义一条路由

    正常的tp6定义路由方法如下:

     /route/admins/app.php 文件内容

    //路由变量自定义
    Route::get('zhanghao/denglu/[:aaa]','app\admins\controller\Account@login');

    appadminscontrollerAccount.php 文件内容

    <?php
    namespace appadminscontroller;
    use thinkfacadeDb;
    use appBaseController;
    class Account extends BaseController{
    
        public function login($aaa){
        	return $aaa;
            return view();
        }
    
    }

    以上是tp6的路由定义流程,我们可以看出,tp6定义路由是view+model+controller三层文件组成的,而EasyAdmin里运用了layui框架,在定义路由的时候需要在加一个js文件,四个文件对应的位置如下图:

    案例内容:定义一个路由组,仿照官方案例里的goods商品列表。

    view:

    easyadmin-2appadminviewmallgoodsone

     index.html文件内容为:

     这里就可以看到定义后的子路由是什么格式

    model:

    easyadmin-2appadminmodel

     文件内容为:

     案例里取消了delete_time限制,这样可以看到表单里的所有数据

    cate方法为外键方法

    controller:

    easyadmin-2appadmincontrollermall

     文件内容为:

    <?php
    
    
    namespace appadmincontrollermall;
    
    
    use appadminmodelMallGoodsOne;
    use appadmin	raitsCurd;
    use appcommoncontrollerAdminController;
    use EasyAdminannotationControllerAnnotation;
    use EasyAdminannotationNodeAnotation;
    use thinkFacadeDb;
    use thinkApp;
    
    /**
     * Class Goods
     * @package appadmincontrollermall
     * @ControllerAnnotation(title="商城商品管理")
     */
    class GoodsOne extends AdminController
    {
    
        use Curd;
    
        protected $relationSearch = true;
    
        public function __construct(App $app)
        {
            parent::__construct($app);
            $this->model = new MallGoodsOne();
        }
    
        /**
         * @NodeAnotation(title="列表")
         */
        public function index()
        {
            //var_dump($this->request->isAjax());exit();
            if ($this->request->isAjax()) {
                if (input('selectFields')) {
                    return $this->selectList();
                }
                list($page, $limit, $where) = $this->buildTableParames();
                $count = $this->model
                    ->withJoin('cate', 'LEFT')
                    ->where($where)
                    ->count();
                $list = $this->model
                    ->withJoin('cate', 'LEFT')
                    ->where($where)
                    ->page($page, $limit)
                    ->order($this->sort)
                    ->select();
                $data = [
                    'code'  => 0,
                    'msg'   => '',
                    'count' => $count,
                    'data'  => $list,
                ];
                return json($data);
            }
            return $this->fetch();
        }
    }

    js:

    easyadmin-2publicstaticadminjsmall

     内容为:

    define(["jquery", "easy-admin"], function ($, ea) {
    
        var init = {
            table_elem: '#currentTable',
            table_render_id: 'currentTableRenderId',
            index_url: 'mall.goodsone/index',
            add_url: 'mall.goodsone/add',
            edit_url: 'mall.goodsone/edit',
            delete_url: 'mall.goodsone/delete',
            export_url: 'mall.goodsone/export',
            modify_url: 'mall.goodsone/modify',
            stock_url: 'mall.goodsone/stock',
        };
    
        var Controller = {
    
            index: function () {
                ea.table.render({
                    init: init,
                    toolbar: ['refresh',
                        [{
                            text: '添加',
                            url: init.add_url,
                            method: 'open',
                            auth: 'add',
                            class: 'layui-btn layui-btn-normal layui-btn-sm',
                            icon: 'fa fa-plus ',
                            extend: 'data-full="true"',
                        }],
                        'delete', 'export'],
                    cols: [[
                        {type: "checkbox"},
                        {field: 'id',  80, title: 'ID'},
                        {field: 'sort',  80, title: '排序', edit: 'text'},
                        {field: 'cate.title', minWidth: 80, title: '商品分类'},
                        {field: 'title', minWidth: 80, title: '商品名称'},
                        {field: 'logo', minWidth: 80, title: '分类图片', search: false, templet: ea.table.image},
                        {field: 'market_price',  100, title: '市场价', templet: ea.table.price},
                        {field: 'discount_price',  100, title: '折扣价', templet: ea.table.price},
                        {field: 'total_stock',  100, title: '库存统计'},
                        {field: 'stock',  100, title: '剩余库存'},
                        {field: 'virtual_sales',  100, title: '虚拟销量'},
                        {field: 'sales',  80, title: '销量'},
                        {field: 'status', title: '状态',  85, search: 'select',selectList: {0: '禁用', 1: '启用'}, templet: ea.table.switch},
                        {field: 'create_time', minWidth: 80, title: '创建时间'},
                        {
                             250,
                            title: '操作',
                            templet: ea.table.tool,
                            operat: [
                                [{
                                    text: '编辑',
                                    url: init.edit_url,
                                    method: 'open',
                                    auth: 'edit',
                                    class: 'layui-btn layui-btn-xs layui-btn-success',
                                    extend: 'data-full="true"',
                                }, 
                                // {
                                //     text: '入库',
                                //     url: init.stock_url,
                                //     method: 'open',
                                //     auth: 'stock',
                                //     class: 'layui-btn layui-btn-xs layui-btn-normal',
                                // }
                                ],
                                'delete']
                        }
                    ]],
                });
    
                ea.listen();
            },
            add: function () {
                ea.listen();
            },
            edit: function () {
                ea.listen();
            },
            stock: function () {
                ea.listen();
            },
        };
        return Controller;
    });

    还需要在数据库中创建一个表,表名为goods_one

     格式可以参照官网案例的goods

    以上就是EasyAdmin定义路由的过程,如果你需要查看报错,你需要修改以下文件

    easyadmin-2config

     内容为:

    <?php
    // +----------------------------------------------------------------------
    // | 应用设置
    // +----------------------------------------------------------------------
    
    use thinkfacadeEnv;
    
    return [
        // 应用地址
        'app_host'         => Env::get('app.host', ''),
        // 应用的命名空间
        'app_namespace'    => '',
        // 是否启用路由
        'with_route'       => true,
        // 是否启用事件
        'with_event'       => true,
        // 开启应用快速访问
        'app_express'      => true,
        // 默认应用
        'default_app'      => 'index',
        // 默认时区
        'default_timezone' => 'Asia/Shanghai',
        // 应用映射(自动多应用模式有效)
        'app_map'          => [
            Env::get('easyadmin.admin', 'admin') => 'admin',
        ],
        // 后台别名
        'admin_alias_name' => Env::get('easyadmin.admin', 'admin'),
        // 域名绑定(自动多应用模式有效)
        'domain_bind'      => [],
        // 禁止URL访问的应用列表(自动多应用模式有效)
        'deny_app_list'    => ['common'],
        // 异常页面的模板文件
        // 'exception_tmpl'   => Env::get('app_debug') == 1 ? app()->getThinkPath() . 'tpl/think_exception.tpl' : app()->getBasePath() . 'common' . DIRECTORY_SEPARATOR . 'tpl' . DIRECTORY_SEPARATOR . 'think_exception.tpl',
        // 跳转页面的成功模板文件
        'dispatch_success_tmpl'   => app()->getBasePath() . 'common' . DIRECTORY_SEPARATOR . 'tpl' . DIRECTORY_SEPARATOR . 'dispatch_jump.tpl',
        // 跳转页面的失败模板文件
        'dispatch_error_tmpl'   => app()->getBasePath() . 'common' . DIRECTORY_SEPARATOR . 'tpl' . DIRECTORY_SEPARATOR . 'dispatch_jump.tpl',
        // 错误显示信息,非调试模式有效
        // 'error_message'    => '页面错误!请稍后再试~',
        // 显示错误信息
        'show_error_msg'   => true,
        // 静态资源上传到OSS前缀
        'oss_static_prefix'   => Env::get('easyadmin.oss_static_prefix', 'static_easyadmin'),
    ];

    如果本文对你有所帮助,麻烦你点个赞,下一章讲下如何创建一个表单并进行增删查改。

  • 相关阅读:
    发布一个扩展Repeater的模板控件,带自动分页功能
    webservice 测试窗体只能用于来自本地计算机的请求
    FCKeditor编辑器中设置默认文本行高和字体大小
    程序员的个人性格
    程序设计模式的有趣解释-追MM
    集锦一
    UML简介(原创)
    一位IT从业人员的心路历程
    一个初级测试工程师的工作总结
    "与熊共舞"(转载)
  • 原文地址:https://www.cnblogs.com/smileZAZ/p/14777596.html
Copyright © 2011-2022 走看看