Search code examples
phptemplatesjoomlajoomla2.5joomla-component

Changing layout of view in Joomla 2.5


I know there are several similar topics around but I read and tried most of them but still can't figure out how to do this.

I have a written a component in Joomla 2.5 and it works so far. I have different views and I can load the views using the controller.php. One of the views shows a table out of my data base (data about teams).

Now I'd like to have another layout of the same view which would display the data base table as a form so can change the content.

That's the file structure:

views/
- teams/
- - tmpl/
- - - default.php
- - - modify.php
- - view.html.php

That's out of the view.html.php file:

...
// Overwriting JView display method
function display($tpl = null) {

    ...

    $this->setLayout('modify');
    echo $this->getLayout();
    // Display the view
    parent::display($tpl);
}

I tried different combinations of setLayout, $tpl = ..., default_modify.php, etc. but I always either get the default layout or some error like 'can't find layout modify'

I load the site with .../index.php?option=com_test&task=updateTeams

And the controller.php looks like this:

function updateTeams(){
    $model = $this->getModel('teams');
    $view = $this->getView('teams','html');
    $view->setModel($model);

    $view->display();
}

Solution

  • I had a similar problem, I created some kind of user profile view and wanted them to be able to edit the fields without having to create a new model for it (would have similar functions, hate redundancy...). What worked for me is to simply call the layout like this:

    index.php?option=com_mycomponent&view=myview&layout=edit ("edit" would be "modify" in your case)

    To do this I didn't touch the view.html.php (well I did at first but I didn't have to.). And you don't need to use the controller either. If you want to load the modify view, just add a button to your regular view linking to the modify layout. No need to change anything else.

    I happen to have written a blog article about it, check it out if you want: http://violetfortytwo.blogspot.de/2012/11/joomla-25-multiple-views-one-model.html

    Hope this helps.