【问题标题】:Joomla: how can I use one form for frontend and backend view?Joomla:如何将一种表单用于前端和后端视图?
【发布时间】:2013-10-05 07:16:49
【问题描述】:

我正在创建一个 Joomla 2.5 组件。在后端,我创建了一个模型/视图/控制器“成员”,它显示了一个网格。我还创建了一个 MVC 'Member',用于从网格中添加或编辑成员。到目前为止一切顺利。

现在,我想添加一个前端视图,它与后端的“会员”视图非常相似,但这个视图是为访问者设计的,因此他们可以自己订阅。它必须比后端表单看起来更用户友好,所以我将在前端创建一个稍微不同的“成员”视图,但我真的很想重用表单文件 (/administrator/components/mycomponent/models/forms/member .xml) 从后端!

那么,我的问题是我的前端视图如何找到并使用该后端表单?

【问题讨论】:

    标签: forms model-view-controller joomla reusability


    【解决方案1】:

    您肯定必须将其加载到模型中。您的模型必须扩展 JModelAdmin,然后 getForm 函数必须加载表单

    public function getForm($data = array(), $loadData = true) {
        // Get the form.
        JForm::addFormPath(JPATH_COMPONENT_ADMINISTRATOR . '/models/forms');
        JForm::addFieldPath(JPATH_COMPONENT_ADMINISTRATOR . '/models/fields');
        $form = $this->loadForm('com_dpattachments.attachment', 'attachment', array('control' => 'jform', 'load_data' => $loadData));
        if (empty($form)) {
            return false;
        }
        ....
    }
    

    我在我的 DPAttachments 组件中使用相同的方法,它适用于 Joomla 3.1,但主要代码在正面和背面使用相同的模型和形式,也应该在 Joomla 2.5 上运行。这是getForm函数的链接 https://github.com/Digital-Peak/DPAttachments/blob/master/com_dpattachments/admin/models/attachment.php#L102

    【讨论】:

    • 第 3 行和第 4 行是我正在寻找的行!但是,我将 JForm::addFormPath() 和 JFrom::addFieldPath() 放在 /site/mycomponent.php 中,以使所有前端模型都从后端获取它们的表单。谢谢!
    【解决方案2】:

    如果您遵循 Joomla MVC 指导,您的前端应该能够自动获取表单。

    在你看来(虽然它实际上应该从模型中请求它)你可以这样写:

    $formsPath = JPATH_ADMINISTRATOR.DS.'components'.DS.'com_mycom'.DS.'models'.DS.'forms';
    $this->form = JForm::getInstance('myform', $formsPath.DS.'myform.xml');
    

    【讨论】:

      【解决方案3】:

      您还可以查看夏季代码 cm_config 项目,该项目使用 JSON 将配置表单和 templateDetails 表单拉到前端。 https://github.com/Buddhima/joomla-cms/tree/gsoc_com_config 或 com_services 分支。

      【讨论】:

        猜你喜欢
        • 2013-05-08
        • 1970-01-01
        • 2013-01-22
        • 2020-03-05
        • 2016-04-04
        • 2015-05-17
        • 2015-11-23
        • 2021-02-26
        • 1970-01-01
        相关资源
        最近更新 更多