4

环顾网络,我找到了在 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 文件。这是创建组件的错误方法,还是一个简单的表单会像这样工作?

提前致谢

4

2 回答 2

2

我遇到了同样的问题并研究了我发现您的问题的主题!答案对我帮助不大,所以我努力解决了这个问题,得到了以下结果......

    $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)”

我看到在您的代码中错过了点属性“名称”。

于 2014-03-03T12:58:14.213 回答
-1

JForm用单独的方式解释起来很复杂。您的问题不仅涉及他,还涉及整个组件的结构。

JForm用于呈现表单,并允许重用字段,甚至是复杂的。要查看完整示例,您最好关注 com_helloword 或 Joomla 版本 1.6 及更高版本的示例,或查看 Joomla 原生组件的源代码。

于 2014-02-03T07:09:25.173 回答