环顾网上,我发现了在Joomla 3.x中创建表单的方法,并且效果很好。
这是我的PHP代码:
$form =& JForm::getInstance('myform','form.xml');
$fieldSets = $form->getFieldsets();
foreach ($fieldSets as $name => $fieldSet) :
?>
<?php
foreach ($form->getFieldset($name) as $field):
?>
<p>
<?php if (!$field->hidden) : ?>
<span class="formlabel"><?php echo $field->label; ?></span>
<?php endif; ?>
<span class="control"><?php echo $field->input; ?></span>
</p>
<?php
endforeach;
?>
<div class="clr"></div>
<?php
endforeach;
这是我的form.xml:
<?xml version="1.0" encoding="utf-8"?>
<form class="form-validate">
<fieldset name="information">
<field id="name"
name="name"
type="text"
label="Namn"
description=""
class="inputbox"
size="30"
default=""
required="true"
/>
<field id="aftername"
name="aftername"
type="text"
label="Efternamn"
description=""
class="inputbox"
size="30"
default=""
required="true"
/>
<field id="email"
name="email"
type="text"
label="E-Post Adress"
description=""
class="inputbox validate-email"
size="30"
default=""
required="true"
/>
<field
name="captcha"
type="captcha"
label="Type the numbers"
description="COM_CONTACT_CAPTCHA_DESC"
validate="captcha"
/>
</fieldset>
</form>
实际上,所有这些都工作正常。我看到字段和验证码,并且它们正确呈现。问题是,尝试在Joomla文档后添加提交按钮,但单击该按钮后却没有任何作用。我的组件只是一个PHP文件,没有views文件夹和模板或其他任何内容。这是创建组件的错误方法,还是简单的表单仍然可以像这样工作?
提前感谢
我遇到了同样的问题,正在研究发现您的问题的主题!答案对我没有多大帮助,所以我做了一些努力来解决该问题,并得到了以下结果...
$fieldsets = $this->form->getFieldsets();
foreach ($fieldsets as $fieldset) {
echo '<h1>' . $fieldset->name . '</h1>';
$fields = $this->form->getFieldset($fieldset->name);
foreach ($fields as $field) {
echo $field->label;
echo $field->input;
}
}
注意事项:“ $ this-> form-> getFieldset($ fieldset-> name)”
[我发现您的代码中缺少点属性“ name”。
JForm
很难单独解释。您的问题不仅涉及他,还涉及整个组件的结构。
JForm
用于呈现表单,并允许重用字段,甚至很复杂。要查看完整的示例,最好遵循Joomla 1.6及更高版本或com_helloword的示例,或者查看Joomla本机组件的源代码。