Skip to main content

Joomla! 2.5: Multiple views, one model

Here goes MVC again: I was a bit confused that every time I created a second or third view for a component, I had to create a separate model for it. Did not make sense to me - I had the necessary algorithms in the model for the first view, did I really need to do copy & paste? I hate it! Redundancy, redundancy, redundancy.

That case occurred in my current project - I created user profiles and needed an "edit" view. The data is the same, but I need to have the data in editable text fields instead of fixed labels, and maybe some other buttons here and there... 

Well, some time later I realized that I just did not quite understand what Joomla! acutally means by "view".  And that there is something called "layout".

Long story short: If you have a model that provides all necessary information and you just want to have a different presentation of it, just add a new .php file to your views/<yourviewname>/tmpl folder - let's call it "layout2". Layout2.php has acces to all data default.php can access - they use the same model. If you want to use it on your site, just add &layout=layout2 to your URL (it would then be something like index.php&option=com_yourcomponent&view=yourview&layout=layout2...).

Comments

  1. THANK YOU. I HATE redundancy with a passion, and the more I study MVC, the more I see what a code-heavy mess it can be if used thoughtlessly. Respect the principles, but common sense does need to come into play. :)

    ReplyDelete

Post a Comment

Popular posts from this blog

Pi Access Point with RTL9182CU-Adapter

Well, I tried a long time and this is mainly a note to myself:

go here first: http://blog.sip2serve.com/post/38010690418/raspberry-pi-access-point-using-rtl8192cu

then go here: https://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/install-software

you do not need to fix the Invalid Argument error, just apply the WPA-Supplicant fix from here: http://forums.adafruit.com/viewtopic.php?f=19&t=47716&start=15

Joomla! 2.5: Menu Items

Some time ago, I started to create my own components. Everything was working fine, but there was one thing that bugged me (even though it is not really necessary... it just looked strange):

When I create a link to my component, I always ended up with something like this in my menu manager:


Similar thing for the menu item type:


I felt like I somehow missed something, but the tutorials did not say anything about it. After playing around for a little while, I found out that the solution actually is pretty simple: The site > views > viewname > tmpl > default.xml file specifies these texts. Joomla! will look for these keys in the language files. Thus, you just need to add some entries to the language files and voila - everything looks nice and clean, just like this:


Step-By-Step:

Let's assume you already created the default.xml file with contents similar to these:

<?xml version="1.0" encoding="utf-8"?>
<metadata>
    <layout title="COM_…