Joomla 3:JForm类。如何提交由它创建的表单?

问题描述 投票:4回答:2

环顾网上,我发现了在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文件夹和模板或其他任何内容。这是创建组件的错误方法,还是简单的表单仍然可以像这样工作?

提前感谢

php joomla
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)”

[我发现您的代码中缺少点属性“ name”。


-1
投票

JForm很难单独解释。您的问题不仅涉及他,还涉及整个组件的结构。

JForm用于呈现表单,并允许重用字段,甚至很复杂。要查看完整的示例,最好遵循Joomla 1.6及更高版本或com_helloword的示例,或者查看Joomla本机组件的源代码。

© www.soinside.com 2019 - 2024. All rights reserved.