織夢自定義表單如何取出一個字段的值,并形成option
最近在使用織夢做站的時候,客戶用了自定義表單的情況下其中有一個字段是一個下拉菜單,織夢原帶的樣式基本不能滿足要示,所以自己做了樣式,那么怎么才能做到,用戶修改了下拉框的值,前臺及時做出改變呢,看了一下代碼,發現了大體上流程是這樣的
post_diyform.htm中有這樣的代碼,表示$postform是生成的代碼
<?php
echo $postform;
?>
在diy.php中有這樣的代碼
require_once DEDEINC.'/diyform.cls.php';
$diy = new diyform($diyid);
/*----------------------------
function Post(){ }
---------------------------*/
if($action == 'post')
{
if(empty($do))
{
$postform = $diy->getForm(true);
include DEDEROOT."/templets/plus/{$diy->postTemplate}";
exit();
}
生成的代碼是,下邊這些代碼是diyform.cls.php中的
function getForm($type = 'post', $value = '', $admintype='diy')
{
global $cfg_cookie_encode;
$dtp = new DedeTagParse();
$dtp->SetNameSpace("field","<",">");
$dtp->LoadSource($this->info);
$formstring = '';
$formfields = '';
$func = $type == 'post' ? 'GetFormItem' : 'GetFormItemValue';
if(is_array($dtp->CTags))
{
// var_dump( $zhuanye= $dtp->GetTag("zhuanye"));
// var_dump( $zhuanye->GetAtt('default'));
foreach($dtp->CTags as $tagid=>$tag)
{
可以看到,代碼中使用了dedetagparse解析了保存的html代碼,
所以我們仿照代碼可以將select字段的默認值取出并分隔,生成option代碼
function getzy( )
{
$dtp = new DedeTagParse();
$dtp->SetNameSpace("field","<",">");
$dtp->LoadSource($this->info);
$formstring = '';
$formfields = '';
$func = $type == 'post' ? 'GetFormItem' : 'GetFormItemValue';
if(is_array($dtp->CTags))
{
$zhuanye= $dtp->GetTag("zhuanye") ;
$items = explode(',',$zhuanye->GetAtt("default"));
foreach($items as $v)
{
$v = trim($v);
if($v!='') {
$formstring.= "<option value='$v'>$v</option>\r\n";
}
}
}
return $formstring;
}
這樣就生成<option>代碼,這樣在post_diy.htm中加入對這個函數的調用就可以了
<?php
echo $diy->getzy();
?>
如果在其它頁面如靜態頁面上如何調用呢?我們可以使用織夢中模板可以寫php代碼的方法,來解決,方法如下,
{dede:php}
require_once DEDEINC.'/diyform.cls.php';
$diy = new diyform(1);
echo $diy->getzy();
{/dede:php}
上一篇:自定義表單、流程、菜單開發總結