聯(lián)系官方銷售客服
1835022288
028-61286886
分享內(nèi)容:《如何在linkage中實現(xiàn)自定義字段的搜索》
實現(xiàn)功能:多個條件匹配,目前只能匹配等于
代碼 如下:
case 'linkage': // 聯(lián)動菜單
$linkage = \Phpcmf\Service::L('cache')->get('linkage-' . $system['site'] . '-' . $param['code']);
if (!$linkage) {
return $this->_return($system['return'], "聯(lián)動菜單{$param['code']}不存在,請在后臺更新緩存");
}
// 通過別名找id
$ids = @array_flip(\Phpcmf\Service::C()->get_cache('linkage-' . $system['site'] . '-' . $param['code'] . '-id'));
if (isset($param['pid'])) {
if (is_numeric($param['pid'])) {
$pid = intval($param['pid']);
} elseif (!$param['pid']) {
$pid = 0;
} else {
$pid = isset($ids[$param['pid']]) ? $ids[$param['pid']] : 0;
!$pid && is_numeric($param['pid']) && \Phpcmf\Service::C()->get_cache('linkage-' . $system['site'] . '-' . $param['code'] . '-id', $param['pid']) && $pid = intval($param['pid']);
}
}
$i = 0;
$return = array();
foreach ($linkage as $t) {
if ($system['num'] && $i >= $system['num']) {
break;
} elseif (isset($param['pid']) && $t['pid'] != $pid) {
continue;
} elseif (isset($param['id']) && !in_array($t['id'], explode(',', $param['id']))) {
continue;
}
$return[] = $t;
$i++;
}
if (!$return && isset($param['pid'])) {
$rpid = isset($param['fid']) ? (int)$ids[$param['fid']] : (int)$linkage[$param['pid']]['pid'];
foreach ($linkage as $t) {
if ($t['pid'] == $rpid) {
if ($system['num'] && $i >= $system['num']) {
break;
}
if (isset($param['id']) && !in_array($t['id'], explode(',', $param['id']))) {
continue;
}
$return[] = $t;
$i++;
}
}
if (!$return) {
return $this->_return($system['return'], '沒有匹配到內(nèi)容');
}
}
/**
* 其他自定義參數(shù)實現(xiàn)開始
*/
//獲取當前l(fā)inkage的所有字段
$db_field_sources = $return[0];
$linkage_db_field = [];
foreach ($db_field_sources as $field => $val) {
array_push($linkage_db_field, $field);
}
$customer_params = array();
if (count($param) > 0) {
foreach ($param as $key => $val) {
if ($key == 'code' || $key == 'pid' || $key == 'id') {
continue;
}
if (!in_array($key, $linkage_db_field)) {
continue;
}
$customer_params[$key] = $val;
}
}
if (!empty($customer_params) && count($customer_params) > 0) {
foreach ($return as $key => $item) {
foreach ($customer_params as $filter_field => $filter_value) {
if($item[$filter_field]!=$filter_value){
unset($return[$key]);
}
}
}
}
/**
* 其他自定義參數(shù)實現(xiàn)結束
*/
return $this->_return($system['return'], isset($param['call']) && $param['call'] ? @array_reverse($return) : $return, '');
break;
我在想想能不能做一個自定義模板標簽,這樣就可以不用破壞源程序,自己設計解析標簽
那看看可不可以可以重新繼承View,開發(fā)者可以自己重寫核心模板解析功能的標簽
http://223987.com/doc/772.html
微信收到通知了,首席牛啊
收藏下
收藏一下