美文网首页
finder相关

finder相关

作者: imjcw | 来源:发表于2018-09-15 09:45 被阅读0次

    原文:命令行工具

    基本结构

    $this->finder('b2c_mdl_orders', array(
        // 标题
        'title' => app::get('b2c')->_('商品列表'),
        // 列表上面的按钮们...
        'actions' => array(
            array(
                'label' => app::get('b2c')->_('编辑订单'),
                // href 会打开新页面
                // submit 是异步提交吧
                'href'=>'index.php?app=b2c&ctl=admin_orders&act=edit',
                'target'=>'_blank'
            )
        ),
        // 准许有详情,这里可以做的比较多
        'allow_detail_popup' => true,
        // 是否显示标签操作
        'use_buildin_set_tag' => true,
        // 是否显示新建操作
        'use_buildin_new_dialog' => true,
        // 是否显示删除操作
        'use_buildin_recycle' => true,
        // 是否显示导出操作
        'use_buildin_export' => true,
        // 是否显示导入操作
        'use_buildin_import' => true,
        // 是否显示标签管理操作
        'use_buildin_tagedit' => true,
        // 基本筛选
        'base_filter' => array(
            'disabled' => 'false'
        ),
        // 是否显示finder中的tab(如果有),有无需看控制器中是否有_views方法。
        'use_view_tab' => true,
        // 是否使用高级筛选
        'use_buildin_filter' => true,
        // 是否显示刷新操作
        'use_buildin_refresh' => true,
        // 是否显示列配置
        'use_buildin_setcol' => true,
        // 是否显示每条记录前的复选按钮
        'use_buildin_selectrow' => true,
        // 是否显示查看列中的弹出查看图标
        'allow_detail_popup' => true,
        // 此finder的别名,用于保存此finder的
        'finder_aliasname' => 'xxxx',
    ));
    

    自定义列

    普通列

    这个相对而言简单很多,只要在 dbschema 中,将字段的 in_list 设置为 true,就OK。

    如果需要默认展示在列表中,则设置 default_in_listtrue,就好。

    函数列

    第一步:注册 service

    找到该模块下的 service.xml,添加一个新的服务:

    <!-- 模板 -->
    <service id="desktop_finder.{mdl class}">
        <class>{finder class}</class>
    </service>
    
    <!-- 示例 -->
    <service id="desktop_finder.b2c_mdl_orders">
        <class>b2c_finder_orders</class>
    </service>
    

    第二步:创建 finder

    文件路径如下 b2c/lib/finder/orders.php (以 b2c_finder_orders 为例)。

    第三步:编辑 finder

    规则:

    • 定义一个以 column_ 为前缀的变量
    • 定义一个以 column_ 为前缀的方法
    • 两者必须同时满足
    <?php
    /**
     * finder orders
     *
     * 这里只是示例,与实际开发代码无关
     */
    class b2c_finder_orders
    {
        // 列名称
        var $column_mobile = '手机号';
    
        // 列方法
        // 最终的列内容是通过这个方法输出的
        function column_mobile($row)
        {
            return '这里可以做一些操作';
        }
    }
    

    最后:update

    执行 php app/base/cmd update (命令根据实际情况而定)。

    功能列

    主要是出现在 detail_popup 里的。

    第一步:注册 service

    找到该模块下的 service.xml,添加一个新的服务:

    <!-- 模板 -->
    <service id="desktop_finder.{mdl class}">
        <class>{finder class}</class>
    </service>
    
    <!-- 示例 -->
    <service id="desktop_finder.b2c_mdl_orders">
        <class>b2c_finder_orders</class>
    </service>
    

    第二步:创建 finder

    文件路径如下 b2c/lib/finder/orders.php (以 b2c_finder_orders 为例)。

    第三步:编辑 finder

    规则:

    • 定义一个以 detail_ 为前缀的变量
    • 定义一个以 detail_ 为前缀的方法
    • 两者必须同时满足
    <?php
    /**
     * finder orders
     *
     * 这里只是示例,与实际开发代码无关
     */
    class b2c_finder_orders
    {
        // 列名称
        var $detail_basic = '基本信息';
    
        // 列方法
        // 最终的列内容是通过这个方法输出的
        function detail_basic($row)
        {
            return '这里可以做一些操作';
        }
    }
    

    最后:update

    执行 php app/base/cmd update (命令根据实际情况而定)。

    自定义高级筛选项

    第一步:注册 service

    找到该模块下的 service.xml,添加一个新的服务:

    <!-- 模板 -->
    <service id="extend_filter_{mdl class}">
        <class>{finder extend class}</class>
    </service>
    
    <!-- 示例 -->
    <service id="extend_filter_b2c_mdl_orders">
        <class>b2c_finder_extend_orders</class>
    </service>
    

    第二步:创建 finder

    文件路径如下 b2c/lib/finder/extend/orders.php (以 b2c_finder_extend_orders 为例)。

    第三步:编辑 finder

    <?php
    /**
     * finder extend orders
     *
     * 这里只是示例,与实际开发代码无关
     */
    class orders_finder_extend_orders
    {
        public function get_extend_colums()
        {
            $db['orders'] =  array(
                'columns' => array(
                    array(
                        'label' => '手机号',
                        'type' => 'varchar(15)',
                        'filtertype' => 'normal'
                    )
                )
            );
            return $db;
        }
    }
    

    第四步:重写 model 下的 _finder 方法

    主要是为了过滤自定义的字段。

    public function _filter($filter, $tableAlias = null, $baseWhere = null)
    {
        if (isset($filter['mobile'])) {
            $mobile = $filter['mobile'];
            unset($filter['mobile']);
            // 找手机号
            if ($mobile) {
                $member = app::get('b2c')->model('members')->getRow('member_id', array('mobile' => $mobile, 'disabled' => 'false'));
                // 找到会员,更换 member_id
                if ($member) {
                    $filter['member_id'] => $member['member_id'];
                }
            }
        }
        $filter = parent::_filter($filter, $tableAlias, $baseWhere);
        return $filter;
    }
    

    最后:update

    执行 php app/base/cmd update (命令根据实际情况而定)。

    自定义快速筛选

    第一步:重写 model 下的 searchOptions 方法

    将需要的筛选项与现有的筛选项合并:

    public function searchOptions()
    {
        $arr = parent::searchOptions();
        return array_merge($arr, array(
            'mobile' => '手机号',
            'keyword' => '手机号'
        ));
    }
    

    最后:重写 model 下的 _filter 方法

    主要是为了过滤自定义的字段。

    public function _filter($filter, $tableAlias = null, $baseWhere = null)
    {
        if (isset($filter['mobile'])) {
            $mobile = $filter['mobile'];
            unset($filter['mobile']);
            // 找手机号
            if ($mobile) {
                $member = app::get('b2c')->model('members')->getRow('member_id', array('mobile' => $mobile, 'disabled' => 'false'));
                // 找到会员,更换 member_id
                if ($member) {
                    $filter['member_id'] => $member['member_id'];
                }
            }
        }
        $filter = parent::_filter($filter, $tableAlias, $baseWhere);
        return $filter;
    }
    

    相关文章

      网友评论

          本文标题:finder相关

          本文链接:https://www.haomeiwen.com/subject/uvszgftx.html