Php 如何在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

我已经创建了一个下拉选择列表自定义字段,就像joomla文档中所教的那样,但是我不想在组件模板中调用这个字段

文件中建议的代码如下所示

//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>