Dijo
Dijo

Reputation: 238

How to add multiple forms Joomla 2.5 component

I am developing a joomla website which required some custom component to integrate manage portfolio, user profile etc. We downloaded one of the hello_world MVC component for joomla 2.5[http://docs.joomla.org/Developing_a_Model-View-Controller_Component/2.5/Introduction] and did necessary customization. First component worked well. But now we need a new component that is having multiple forms required to integrate. Eg: Store types for one form, store details for another form, manage country/ state by another form. In the default component having option for manage one form [add/edit/delete/view]. Here I tried to modify/replicate but I failed. Can anyone suggest the architecture/ sample code to manage multiple forms [Add/edit/delete/view] in joomla 2.5 component creation. Any help will be apreciate?

Upvotes: 3

Views: 2219

Answers (1)

arturo
arturo

Reputation: 41

Supposing You're speaking of forms stored in the model/forms folder... You should try to override the getForm() function in your model, to call the right form. You should pass a 'layout' when calling the page and then get it in the model constructor.

May be so:

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;
    }

You must put a layout for each form in the views/YourView/tmpl folder and the form declaration must call the layout also :

<form action="<?php echo JRoute::_('index.php?option=com_yourcomponent&layout=firstlayout&id='.(int) $this->item->id); ?>"
      method="post" name="adminForm" id="draw-form">

Upvotes: 4

Related Questions