原文:命令行工具
基本结构
$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_list
为 true
,就好。
函数列
第一步:注册 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;
}
网友评论