Php 如何在joomla组件视图模板中使用自定义字段
我已经创建了一个下拉选择列表自定义字段,就像joomla文档中所教的那样,但是我不想在组件模板中调用这个字段 文件中建议的代码如下所示Php 如何在joomla组件视图模板中使用自定义字段,php,xml,joomla,Php,Xml,Joomla,我已经创建了一个下拉选择列表自定义字段,就像joomla文档中所教的那样,但是我不想在组件模板中调用这个字段 文件中建议的代码如下所示 //Get custom field JFormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields'); $cities = JFormHelper::loadFieldType('City', false); $cityOptions=$cities->getOptions(); // works
//Get custom field
JFormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields');
$cities = JFormHelper::loadFieldType('City', false);
$cityOptions=$cities->getOptions(); // works only if you set your field getOptions on public!!
但是它怎么能显示得像一张精选表格呢?像
<select>
<option></option>
<option></option>
<option></option>
</select>
字段定义代码如下所示:
<?php
// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die('Restricted access');
jimport('joomla.form.formfield');
// The class name must always be the same as the filename (in camel case)
class JFormFieldRank extends JFormField {
//The field class must know its own type through the variable $type.
protected $type = 'Rank';
public function getLabel() {
// code that returns HTML that will be shown as the label
}
public function getInput() {
// code that returns HTML that will be shown as the form field
return '<select id="'.$this->id.'" name="'.$this->name.'">'.
'<option value="0" >00 President</option>'.
'<option value="1" >01 Vice President</option>'.
'<option value="10" >10 General Secretary</option>'.
'<option value="20" >20 Financial Chair</option>'.
'<option value="21" >21 Financial Deputy Chair</option>'.
'<option value="30" >30 Academics Chair</option>'.
'<option value="31" >31 Academics Deputy Chair</option>'.
'<option value="40" >40 Public Relation Chair</option>'.
'<option value="41" >41 Public Relation Deputy Chair</option>'.
'<option value="50" >50 Publicity Chair</option>'.
'<option value="51" >51 Publicity Deputy Chair</option>'.
'<option value="60" >60 Social and Sports Chair</option>'.
'<option value="61" >61 Social and Sports Deputy Chair</option>'.
'<option value="70" >70 Logistics and Welfare Chair</option>'.
'<option value="71" >71 Logistics and Welfare Deputy Chair</option>'.
'<option value="80" >80 IPSSSCB Advisor</option>'.
'</select>';
}
}
这看起来像是一个完全正常的列表字段,为什么要将其定义为自定义字段?也就是说type=“list”,然后将xml放在xml文件中,就像任何列表字段一样(核心表单中有几十个示例)
00主席
01副总裁
10秘书长
20财务主席
21财务副主席
30名学者担任主席
...
80国际公共部门会计准则委员会顾问
当然,您可以更改文本,这就是将它们作为字符串键的全部意义,您可以在组件语言文件中创建自己的键。再次查看核心表单中的任何表单字段。最佳做法是对值也使用语言键。但是,我想在网站模板中使用字段,如何在xml中调用该字段?您所说的“在网站模板中”是什么意思?这不是一个模板参数,它与模板有关,比如“背景色”,它看起来与一些个人有关。你不想在你网站的每一页上都出现这个字段,是吗?如果您已经创建了自己的组件,那么表单视图是否有MVC triad?对不起,我构建了一个组件,在view default.php中,有一个表单,在表单中,我希望使用自定义字段创建一个名为“rank”的输入框。是吗?您的组件有一个模型来将数据移动到数据库,有一个视图来呈现表单,还有一个控制器来管理整个过程,对吗?因此,在您的布局中,就像在所有其他表单中一样,您可以执行类似于上一个问题的操作,我想将输入字段的名称设置为“rank”,这与数据库字段的名称相同,这样我就可以通过“post”方法将表单的数据插入数据库,那么我应该在哪里设置字段名称呢?在xml文件中?
<field name="title" type="Rank" label="JGLOBAL_TITLE"
description="JFIELD_TITLE_DESC"
required="true" />
<fieldset addfieldpath="/administrator/components/com_committee/models/fields">
<field name="title" type="list" label="COM_MYCOMPONENT_FIELD_TITLE_LABEL"
description="COM_MYCOMPONNET_TITLE_DESC"
required="true" >
<option value="0" >00 President</option>
<option value="1" >01 Vice President</option>
<option value="10" >10 General Secretary</option>
<option value="20" >20 Financial Chair</option>
<option value="21" >21 Financial Deputy Chair</option>
<option value="30" >30 Academics Chair</option>
...
<option value="80" >80 IPSSSCB Advisor</option>
</field>