3

我正在开发一个 joomla 网站,它需要一些自定义组件来集成管理投资组合、用户配置文件等。我们下载了 joomla 2.5 的 hello_world MVC 组件之一[http://docs.joomla.org/Developing_a_Model-View-Controller_Component/2.5/简介]并做了必要的定制。第一个组件运行良好。但是现在我们需要一个新组件,它需要集成多种形式。例如:存储一个表单的类型,存储另一个表单的详细信息,通过另一个表单管理国家/州。在具有管理一种表单[添加/编辑/删除/查看]选项的默认组件中。在这里,我尝试修改/复制,但失败了。任何人都可以建议架构/示例代码来管理 joomla 2.5 组件创建中的多个表单 [添加/编辑/删除/查看]。任何帮助将不胜感激?

4

1 回答 1

4

假设您说的是存储在模型/表单文件夹中的表单......您应该尝试覆盖模型中的 getForm() 函数,以调用正确的表单。您应该在调用页面时传递一个“布局”,然后在模型构造函数中获取它。

可能是这样:

class YourComponentModelYourModel extends JModelAdmin{

           public function __construct($config = array()){
                switch(JRequest::getVar('layout')){
                        case 'firstlayout' : $this->form='firstform';
                        break;
                        case 'secondlayout' : $this->form='secondform';
                        break;
                        default : $this->form='defaultform';
                        }
             parent::__construct($config);
             }      

...

public function getForm($data = array(), $loadData = true) 
    {
        // Get the form.
        $form = $this->loadForm('com_yourcomponent.'.$this->form,$this->form,
                                array('control' => 'jform', 'load_data' => $loadData));

        if (empty($form)){return false;}
        return $form;
    }

您必须在 views/YourView/tmpl 文件夹中为每个表单放置一个布局,并且表单声明也必须调用布局:

<form action="<?php echo JRoute::_('index.php?option=com_yourcomponent&layout=firstlayout&id='.(int) $this->item->id); ?>"
      method="post" name="adminForm" id="draw-form">
于 2013-05-02T22:43:37.023 回答