phpcms在添加內(nèi)容時(shí),有時(shí)添加的數(shù)據(jù)是其他表中數(shù)據(jù),比如我現(xiàn)在遇到的一個(gè)問(wèn)題,A欄目是一個(gè)用來(lái)發(fā)布所有公司介紹的欄目,當(dāng)前臺(tái)的會(huì)員注冊(cè)被后臺(tái)管理員批準(zhǔn)可以進(jìn)入后臺(tái)發(fā)布找到A欄目發(fā)布的新聞資訊,這時(shí)就不能在A欄目中修改,因?yàn)檫@個(gè)新聞資訊是一個(gè)動(dòng)態(tài)的,而是需要做一個(gè)B欄目,B欄目添加數(shù)據(jù)和普通欄目沒(méi)區(qū)別,但是現(xiàn)在需要將A欄目和B欄目關(guān)聯(lián)起來(lái),其實(shí)就是兩個(gè)表關(guān)聯(lián)起來(lái),說(shuō)白了,就是通過(guò)主外鍵關(guān)聯(lián)起來(lái) ,所以,在B欄目中發(fā)布新聞時(shí)要對(duì)應(yīng)發(fā)布的是哪家公司的新聞,這時(shí)就要在添加內(nèi)容的頁(yè)面的表單里加一個(gè)表單框用來(lái)選數(shù)據(jù)關(guān)聯(lián)起來(lái)(比如一個(gè) ),這時(shí)就要用到萬(wàn)能字段,如果說(shuō)為什么非要用萬(wàn)能字段,可以參考發(fā)布內(nèi)容頁(yè)面添加相關(guān)文章的那個(gè)表單,它就是用的萬(wàn)能字段,接下來(lái),就是重點(diǎn)了
這是phpcms的提示,
{FIELD_VALUE}就是所謂的表單值,可以完全不去在意。這個(gè)提示主要看的是在萬(wàn)能字段中設(shè)置自定義表單時(shí)name值如何寫(xiě),為什么name值是個(gè)數(shù)組info[自定義的字段名],因?yàn)檫@是在添加數(shù)據(jù)的時(shí)候一個(gè)$_POST把所有表單獲取之后用foreach遍歷組成sql語(yǔ)句添加到數(shù)據(jù)庫(kù)。這里只要明白name的規(guī)范就行,其他無(wú)所謂,然后就是真正的使用方法了,caches/caches_model/caches_data/content_form.class.php約460行,(這是出自網(wǎng)上一個(gè)高手的解說(shuō)截取片斷),仔細(xì)一看,這個(gè)萬(wàn)能字段的萬(wàn)能處就是可以用函數(shù),{FUNC(函數(shù)名不要加括號(hào)~~{FIELD_VALUE})}或者{FUNC(函數(shù)名~~)},自定義函數(shù)的時(shí)候在 /phpcms/libs/functions/extention.func.php,所以,綜上所述,在設(shè)置萬(wàn)能字段的表單時(shí)可以直接寫(xiě)個(gè)函數(shù),然后再函數(shù)里面查詢數(shù)據(jù)做表單最后通過(guò)頁(yè)面輸出,實(shí)現(xiàn)A和B欄目的關(guān)聯(lián)。
function select_cat(){
$ceshi= pc_base::load_model('ceshi_model');
$rs=$ceshi->query("select * from v9_news ");
if($rs->num_rows>0){
$str= "
foreach($rs as $a){
$str=$str. "";
}
$str=$str."";
}
else
{
$str="";
}
return $str;
}
該函數(shù)是我自定義的,只需要在萬(wàn)能字段添加時(shí),寫(xiě){FUNC(select_cat~~)}