美文网首页
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相关

    原文:命令行工具 基本结构 自定义列 普通列 这个相对而言简单很多,只要在 dbschema 中,将字段的 in_...

  • Cocos 打包相关

    打包流程 TODO 错误相关 报错信息: resource fork, Finder information, o...

  • Mac日常使用进阶技巧

    光标控制 监控相关 其他控制 Finder Spotlight Safari 全屏后直接control + Q退出...

  • TotalFinder-MAC下优秀的第三方Finder插件

    每天使用Finder的次数最多,Finder也是最难用,Mac上的比较好的Finder有Path finder, ...

  • mac使用技巧总结(持续更新)

    设置启动finder时默认打开的目录 finder --> perferences 里设置 设置finder边栏显...

  • Finder

    灵感是一枚钻石,我怎可不做宝贝,是为生命。 23岁,明明无论如何 计划着一篇文章,给自己一个梳理日子的机会,绵长而...

  • (2)、编译时候报错:ld: library not found

    在这个结构下show in finder 然后本地搜索 再进行下面的操作 根据找到文件夹里面相关的 .a iOS库...

  • Finder Sync 使用总结

    Finder Sync适用于OSX Finder Sync用于在Finder下显示被监控目录或文件的同步状态,可设...

  • Mac 电脑 效率装逼利器

    finder 提高效率 之 装逼利器 基本设置 finder 的基本技巧网上很多 finder 设置 1.Tota...

  • 常用命令

    Finder中隐藏,显示文件 隐藏,显示,指定文件 Finder显示当前路径 Finder不显示当前路径 允许安装...

网友评论

      本文标题:finder相关

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