本文章解決問題如下:《內(nèi)容關(guān)聯(lián)類型字段,如果在編輯時候保存不在關(guān)聯(lián)字段中的值》
應用場景:
假設 A模塊中的一個 name_id 字段使用的是 B模塊的內(nèi)容關(guān)聯(lián)
B模塊現(xiàn)在 數(shù)據(jù)庫有的數(shù)據(jù)ID(1,2,3,4)
A 模塊name_id 的值為 :1,2
假設現(xiàn)在因為業(yè)務需要,需要自定義這個模塊的值為,1,2,33,44
那么現(xiàn)在的系統(tǒng)會自動替換到 不在B模塊中的值
那么修改文件:dayrui/Fcms/Field/Related.php
代碼如下:
$value = @trim($value, ',');
if ($value && is_string($value)) {
$value_object_array = explode(",",$value);
$db = \Phpcmf\Service::M()->db->query('select id,title,url from '.\Phpcmf\Service::M()->dbprefix(SITE_ID.'_'.$module).' where id IN ('.$value.') order by instr("'.$value.'", id)');
$query = $db ? $db->getResultArray() : [];
if ($query) {
foreach ($query as $t) {
$id = $t['id'];
if(in_array($id,$value_object_array)){
$key = array_search($id,$value_object_array);
unset($value_object_array[$key]);
}
$value = '<a href="'.$t['url'].'" target="_blank">'.$t['title'].'</a>';
$str.= str_replace(array('{id}', '{value}', '\\'), array($id, $value, ''), $tpl);
}
foreach($value_object_array as $t){
$value = '<a href="#" target="_blank">未知自定義</a>';
$str.= str_replace(array('{id}', '{value}', '\\'), array($t, $value, ''), $tpl);
}
}else{
foreach($value_object_array as $t){
$value = '<a href="#" target="_blank">未知自定義</a>';
$str.= str_replace(array('{id}', '{value}', '\\'), array($t, $value, ''), $tpl);
}
}
}
分享技術(shù)的精神值得鼓勵
針對這個帖子我專門寫了一個不破壞系統(tǒng)的方法:http://m.apdwn.com/doc/733.html
開源是一種精神,但不是義務,幫忙是情分,不幫也不要抱怨,建議大家多研究代碼、多閱讀代碼、多翻閱社區(qū)歷史問題!
回復迅??蚣軇?chuàng)始人
是的,diy的這個我看了確實很好,可以不破壞系統(tǒng)的,我可以把它完善成 文件的 在分享出來
回復@ericwolf
在這里還有個問題
我現(xiàn)在已經(jīng)關(guān)聯(lián)了字段類型,有沒有辦法可以在不刪除字段的前提下,改變字段類型
http://m.apdwn.com/doc/734.html
回復@ericwolf
開源是一種精神,但不是義務,幫忙是情分,不幫也不要抱怨,建議大家多研究代碼、多閱讀代碼、多翻閱社區(qū)歷史問題!
回復迅??蚣軇?chuàng)始人
好沒問題了
收藏了
收藏了?。?!
收藏了?。?!