如何将表单验证添加到joomla模块

时间:2017-05-15 12:29:34

标签: joomla module server-side-validation

我想知道是否可以在joomla 3.7中为模块添加自定义表单验证。我希望我的客户能够在模块管理中填写两个日期字段[start]和[end]。但我无法找到一种正确的方法来检查类似"两个字段都是可选的,但如果一个字段填写另一个字段也必须是有效日期"。我知道我可以用Joomla组件做到这一点,但我在这里编写模块。

我还阅读了有关编码和将自定义验证规则文件复制到管理员文件夹的内容,但这感觉有点“肮脏”#34;对我而言,因为模块应该在安装后立即工作并且还可以更新安全。

所以我的问题是:有没有人知道"正确的"实现这个目标的方法?

1 个答案:

答案 0 :(得分:2)

对于服务器端验证,您可以使用自定义验证规则。

Joomla's documentation tutorial显示组件,但您可以修改它以与模块一起使用,而不会丢失任何未来的更新功能:

<ul>
    <?php
        $obj = new Mage_Catalog_Block_Navigation();
        $storeCategories = $obj->getStoreCategories();
        Mage::registry('current_category') ? $currentCategoryId = Mage::registry('current_category')->getId() : $currentCategoryId='';
        foreach ($storeCategories as $_category):
    ?>
            <li>
                <strong><?php echo $_category->getName(); ?></strong>
                <?php $categoryChildren = $_category->getChildren(); ?>
                <?php if($categoryChildren->count()) : ?>
                    <ul>

                        <?php foreach($categoryChildren as $_categoryChild) : ?>
                            <?php $_categoryChildModel = Mage::getModel('catalog/category')->load($_categoryChild->getId());?>
                            <?php $categoryGrandchildren=$_categoryChild->getChildren(); ?>
                            <li>
                                <?php
                                    $currentCategoryId===$_categoryChild->getId() ? $bold="style=\"font-weight:bold\"" : $bold='';
                                    echo '&emsp;' . '<a href="' . $_categoryChildModel->getUrl() . '"' . $bold . '>' .  $_categoryChild->getName() . '(' . $_categoryChildModel->getProductCollection()->count() . ')</a>';
                                ?>
                            </li>
                            <?php if($categoryGrandchildren->count()) : ?>
                                <?php foreach($categoryGrandchildren as $_categoryGrandchild) : ?>
                                    <?php $_categoryGrandchildModel = Mage::getModel('catalog/category')->load($_categoryGrandchild->getId());?>
                                    <li>
                                        <?php
                                            $currentCategoryId===$_categoryChild->getId() ? $bold="style=\"font-weight:bold\"" : $bold='';
                                            echo '&emsp;&emsp;' . '<a href="' . $_categoryGrandchildModel->getUrl() . '"' . $bold . '>' .  $_categoryGrandchild->getName() . '(' . $_categoryGrandchildModel->getProductCount() . ')</a>';
                                        ?>
                                    </li>
                                <?php endforeach; ?>
                            <?php endif; ?>
                        <?php endforeach; ?>
                    </ul>
                <?php endif; ?>
            </li>
        <?php endforeach ?>
</ul>

然后,您将在模块的<config> <fields name="params"> <fieldset name="basic" addrulepath="modules/mod_module/rules"> <field name="field" rule="dualdate" /> </fieldset> </fields> </config> 文件夹中创建自定义规则类:

rule