xml在joomla表單中的應(yīng)用詳解分享
更新時間:2012年07月19日 13:27:13 作者:
xml在joomla中應(yīng)用廣泛,從安裝文件配置到模版,模塊,組件,插件中都有應(yīng)用
使用起來基本都有固定格式,在此不多說,這里主要說說xml在創(chuàng)建表單中的應(yīng)用.表單的作用不言而喻,在模塊配置里面有表單,組件里面也有表單,這里的配置里面的參數(shù)設(shè)置就是xml生成的表單,相對于通過直接建表單方便不少,這里通過編輯文章表單的使用過程來說,在使用之前,我們先來了解一下表單元素的類型,joomla提供了生成多種表單元素樣式.
<param name="created" type="calendar" label="創(chuàng)建時間" description="時間顯示" /> //生成日歷時間
<param name="catid" type="category" default="2" label="Category" description="文章分類列表" /> //得到單元列表
<param name="catid" type="category" section="com_weblinks" default="0" label="Category" description="其他組件分類" /> //其他組件單元列表
<param name='m1' type='editors' label='編輯' /> //編輯器選擇列表
<param name='m1' type='filelist' label='編輯' directory='/images' hide_default="1" filter="html"/> //文件列表 html表示顯示擴展名為html
<param name='m1' type='Folderlist' label='編輯' directory='/images' hide_default="1" filter=""/> //文件夾列表
<param name='m1' type='Hidden'/> //隱藏域
<param name="file_name" type="imagelist" directory="/images/stories" filter="" hide_default="1" label="Menu Image" description="圖片列表列表" />
<param name="list" type="list" label="select列表" description="select 列表">
<option value="">未分類</option>
<option value="0">中國</option>
<option value="1">美國</option>
</param>
<param name='m1' type='password' label='測試' size='20'/> //密碼
<param name="cache" type="radio" default="0" label="單選" description="單選按鈕"> //單選
<option value="0">No</option>
<option value="1">Yes</option>
</param>
<param name="sectionid" type="section" default="0" label="選擇單元" description="單元" /> //單元選擇
<param type="spacer"/> //水平線
<param name='m1' type='sql' label='測試' query="select id,title from #__categories" key_field='id' value_field='title' /> //SQL生成列表
<param name="robots" type="text" size="20" default="10" label="文本框" description="文本框text" /> //文本框
<param name="keywords" type="textarea" rows="5" cols="90" label="文本域" description="文本域 textarea" /> //文本域無樣式
<param name="keywords" type="editor" rows="5" cols="90" label="文本域" description="文本域 textarea" /> //文本域有樣式
<param name='m1' type='Timezones' label='測試' default='8' /> //生成時區(qū)列表
上邊就是提供的一些生成元素,但是如何使用呢,我們首先建立一個form.xml,在組件的models文件夾內(nèi)
<?xml version="1.0" encoding="utf-8"?>
<form>
<name>表單測試 </name>
<fieldset name='details'/>
<params group="html" addpath="/administrator/components/com_category/elements">
<param name='m1' type='Hidden'/>
</params>
</form>
這里只有一個隱藏元素其實我們可以建立更多的元素,就是上邊的那些生成元素類型,當(dāng)然還可以自定義,這里的addpath就是自定義元素類型,位置就是在組建的elements文件夾內(nèi),上邊的是內(nèi)置的,筆者在這里定義了如下類型
<param name='custom' type='custom' label='自定義'> //自定義控件
<param name='arr' type='arr' label='數(shù)組' arr="array(1=>'中國',2=>'美國')"/>//數(shù)組轉(zhuǎn)換成列表 不寫下標(biāo)從0開始
<param name='radios' type='radios' label='是否單選'> //生成是否單選
<param name='arr' type='upload' label='數(shù)組' size='20'/>//上傳控件
<param name='arr' type='checkbox' label='數(shù)組' arr="array('1'=>'中國','2'=>'美國')"/>//數(shù)組復(fù)選
<param name='type' type='type' label='無線分類' />//無限分類 注意添加section父類為0
使用方法如上,元素的自定義文件在下載里面提供.接著我們在views文件夾下面你的視圖文件夾內(nèi)的view.html.php增加如下語句
$form = new JParameter('',JPATH_COMPONENT.DS.'models'.DS.'form.xml');
$form->set('m1','默認值');
$html=$form->render('details', 'html'); //details是元素名數(shù)組
$this->assignRef('html',$html);
上邊第二句就是賦值,把隱藏域賦值,相當(dāng)于編輯里面取值,第三四句是把表單html輸出到模版,details是元素名稱數(shù)組名,生成的m1的name就是details[m1],接著就是form.php調(diào)用如下
<form action="index.php" method="post" name="adminForm">
<fieldset class="adminform"><legend>詳情</legend>
<?php
echo $this->html;
?>
<?php echo JHTML::_( 'form.token' ); ?>
</fieldset>
</form>
這樣一個表單就生成了,相對于直接寫表單元素,這種方法更容易修改風(fēng)格或者內(nèi)容,修改只需要改xml文件即可,在joomla2.5版本中,基本上都是通過這種方式實現(xiàn)的,不過變化比較大,xml文件寫法大不相同,通過xml是可以調(diào)用其他組件里面表單元素的.
表單元素的這些類型在模版配置參數(shù),模塊參數(shù)都是可以使用的,特別是可以自己擴展表單元素的樣式,你完全可以定義出其他樣式類型,筆者定義了比較常用的幾種但是內(nèi)置沒有提供的,比如數(shù)組轉(zhuǎn)換列表,數(shù)組轉(zhuǎn)換復(fù)選,無限分類等樣式.這里的類型其實就是api的JElement類,里面的源文件可以參考libraries\joomla\html\parameter\element,這里自定義表單元素怎么寫呢這里給個例子或者參考源文件就明白了,文件名custom.php,類型也就是custom了,調(diào)用方法<param name='custom' type='custom' label='自定義' />
<?php
// 自定義顯示
//
defined('_JEXEC') or die('Restricted access');
class JElementCustom extends JElement{
var $_name = 'Custom';
function fetchElement($name, $value, &$node, $control_name) {
$html=<<<EOF
自定義
EOF;
return $html;
}
}
好了,就不多講了,其實這只是一種建立表單的方法,如果你不喜歡,完全可以使用寫表單元素,不過既然joomla提供了這些我們?yōu)槭裁床挥媚?
下載自定義元素: elements_jb51.rar
復(fù)制代碼 代碼如下:
<param name="created" type="calendar" label="創(chuàng)建時間" description="時間顯示" /> //生成日歷時間
<param name="catid" type="category" default="2" label="Category" description="文章分類列表" /> //得到單元列表
<param name="catid" type="category" section="com_weblinks" default="0" label="Category" description="其他組件分類" /> //其他組件單元列表
<param name='m1' type='editors' label='編輯' /> //編輯器選擇列表
<param name='m1' type='filelist' label='編輯' directory='/images' hide_default="1" filter="html"/> //文件列表 html表示顯示擴展名為html
<param name='m1' type='Folderlist' label='編輯' directory='/images' hide_default="1" filter=""/> //文件夾列表
<param name='m1' type='Hidden'/> //隱藏域
<param name="file_name" type="imagelist" directory="/images/stories" filter="" hide_default="1" label="Menu Image" description="圖片列表列表" />
<param name="list" type="list" label="select列表" description="select 列表">
<option value="">未分類</option>
<option value="0">中國</option>
<option value="1">美國</option>
</param>
<param name='m1' type='password' label='測試' size='20'/> //密碼
<param name="cache" type="radio" default="0" label="單選" description="單選按鈕"> //單選
<option value="0">No</option>
<option value="1">Yes</option>
</param>
<param name="sectionid" type="section" default="0" label="選擇單元" description="單元" /> //單元選擇
<param type="spacer"/> //水平線
<param name='m1' type='sql' label='測試' query="select id,title from #__categories" key_field='id' value_field='title' /> //SQL生成列表
<param name="robots" type="text" size="20" default="10" label="文本框" description="文本框text" /> //文本框
<param name="keywords" type="textarea" rows="5" cols="90" label="文本域" description="文本域 textarea" /> //文本域無樣式
<param name="keywords" type="editor" rows="5" cols="90" label="文本域" description="文本域 textarea" /> //文本域有樣式
<param name='m1' type='Timezones' label='測試' default='8' /> //生成時區(qū)列表
上邊就是提供的一些生成元素,但是如何使用呢,我們首先建立一個form.xml,在組件的models文件夾內(nèi)
復(fù)制代碼 代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<form>
<name>表單測試 </name>
<fieldset name='details'/>
<params group="html" addpath="/administrator/components/com_category/elements">
<param name='m1' type='Hidden'/>
</params>
</form>
這里只有一個隱藏元素其實我們可以建立更多的元素,就是上邊的那些生成元素類型,當(dāng)然還可以自定義,這里的addpath就是自定義元素類型,位置就是在組建的elements文件夾內(nèi),上邊的是內(nèi)置的,筆者在這里定義了如下類型
復(fù)制代碼 代碼如下:
<param name='custom' type='custom' label='自定義'> //自定義控件
<param name='arr' type='arr' label='數(shù)組' arr="array(1=>'中國',2=>'美國')"/>//數(shù)組轉(zhuǎn)換成列表 不寫下標(biāo)從0開始
<param name='radios' type='radios' label='是否單選'> //生成是否單選
<param name='arr' type='upload' label='數(shù)組' size='20'/>//上傳控件
<param name='arr' type='checkbox' label='數(shù)組' arr="array('1'=>'中國','2'=>'美國')"/>//數(shù)組復(fù)選
<param name='type' type='type' label='無線分類' />//無限分類 注意添加section父類為0
使用方法如上,元素的自定義文件在下載里面提供.接著我們在views文件夾下面你的視圖文件夾內(nèi)的view.html.php增加如下語句
復(fù)制代碼 代碼如下:
$form = new JParameter('',JPATH_COMPONENT.DS.'models'.DS.'form.xml');
$form->set('m1','默認值');
$html=$form->render('details', 'html'); //details是元素名數(shù)組
$this->assignRef('html',$html);
上邊第二句就是賦值,把隱藏域賦值,相當(dāng)于編輯里面取值,第三四句是把表單html輸出到模版,details是元素名稱數(shù)組名,生成的m1的name就是details[m1],接著就是form.php調(diào)用如下
復(fù)制代碼 代碼如下:
<form action="index.php" method="post" name="adminForm">
<fieldset class="adminform"><legend>詳情</legend>
<?php
echo $this->html;
?>
<?php echo JHTML::_( 'form.token' ); ?>
</fieldset>
</form>
這樣一個表單就生成了,相對于直接寫表單元素,這種方法更容易修改風(fēng)格或者內(nèi)容,修改只需要改xml文件即可,在joomla2.5版本中,基本上都是通過這種方式實現(xiàn)的,不過變化比較大,xml文件寫法大不相同,通過xml是可以調(diào)用其他組件里面表單元素的.
表單元素的這些類型在模版配置參數(shù),模塊參數(shù)都是可以使用的,特別是可以自己擴展表單元素的樣式,你完全可以定義出其他樣式類型,筆者定義了比較常用的幾種但是內(nèi)置沒有提供的,比如數(shù)組轉(zhuǎn)換列表,數(shù)組轉(zhuǎn)換復(fù)選,無限分類等樣式.這里的類型其實就是api的JElement類,里面的源文件可以參考libraries\joomla\html\parameter\element,這里自定義表單元素怎么寫呢這里給個例子或者參考源文件就明白了,文件名custom.php,類型也就是custom了,調(diào)用方法<param name='custom' type='custom' label='自定義' />
復(fù)制代碼 代碼如下:
<?php
// 自定義顯示
//
defined('_JEXEC') or die('Restricted access');
class JElementCustom extends JElement{
var $_name = 'Custom';
function fetchElement($name, $value, &$node, $control_name) {
$html=<<<EOF
自定義
EOF;
return $html;
}
}
好了,就不多講了,其實這只是一種建立表單的方法,如果你不喜歡,完全可以使用寫表單元素,不過既然joomla提供了這些我們?yōu)槭裁床挥媚?
下載自定義元素: elements_jb51.rar
相關(guān)文章
Codeigniter框架實現(xiàn)獲取分頁數(shù)據(jù)和總條數(shù)的方法
這篇文章主要介紹了Codeigniter框架實現(xiàn)獲取分頁數(shù)據(jù)和總條數(shù)的方法,實現(xiàn)了對獲取當(dāng)前頁的數(shù)據(jù)和總條數(shù)方法的封裝,是非常實用的技巧,需要的朋友可以參考下2014-12-12Laravel + Elasticsearch 實現(xiàn)中文搜索的方法
這篇文章主要介紹了Laravel + Elasticsearch 實現(xiàn)中文搜索的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02ThinkPHP行為擴展Behavior應(yīng)用實例詳解
這篇文章主要介紹了ThinkPHP行為擴展Behavior應(yīng)用實例,對于讀者深入了解ThinkPHP框架程序設(shè)計大有幫助,需要的朋友可以參考下2014-07-07PHP封裝分頁函數(shù)實現(xiàn)文本分頁和數(shù)字分頁
本文主要是給大家分享了一段PHP的封裝好的分頁函數(shù),可以實現(xiàn)文本分頁和數(shù)字分頁兩種形式,非常的實用,有需要的朋友可以參考下2014-10-10