Archived

Difference between revisions of "Developing a MVC Component/Adding a variable request in the menu type"

From Joomla! Documentation

< Archived:Developing a MVC Component
(1.6 is not supported anymore)
Line 1: Line 1:
This tutorial is for {{JVer|1.6}}
+
This tutorial is for {{JVer|1.7}}
  
 
== Articles in this series ==
 
== Articles in this series ==
{{Chunk:Developing a Model-View-Controller (MVC) Component for Joomla!1.6 - Contents}}
+
{{Chunk:Developing a Model-View-Controller (MVC) Component for Joomla!1.7 - Contents}}
  
 
== Introduction ==
 
== Introduction ==
This tutorial is part of the [[Developing a Model-View-Controller (MVC) Component for Joomla!1.6]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.
+
This tutorial is part of the [[Developing a Model-View-Controller (MVC) Component for Joomla!1.7]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.
  
 
== Adding a variable request in the menu type ==
 
== Adding a variable request in the menu type ==
For the moment, the displayed message is always ''Hello World!''. Joomla!1.6 gives the possibility to add parameters to menu types. In our case, this is done in the ''site/views/helloworld/tmpl/default.xml'' file:
+
For the moment, the displayed message is always ''Hello World!''. Joomla!1.7 gives the possibility to add parameters to menu types. In our case, this is done in the ''site/views/helloworld/tmpl/default.xml'' file:
  
 
<span id="site/views/helloworld/tmpl/default.xml">
 
<span id="site/views/helloworld/tmpl/default.xml">
Line 94: Line 94:
 
<source lang="xml">
 
<source lang="xml">
 
<?xml version="1.0" encoding="utf-8"?>
 
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="1.6.0" method="upgrade">
+
<extension type="component" version="1.7.0" method="upgrade">
  
 
<name>Hello World!</name>
 
<name>Hello World!</name>
Line 109: Line 109:
 
<description>Description of the Hello World component ...</description>
 
<description>Description of the Hello World component ...</description>
  
<update> <!-- Runs on update; New in 1.6 -->
+
<update> <!-- Runs on update; New in 1.7 -->
 
<schemas>
 
<schemas>
 
<schemapath type="mysql">sql/updates/mysql</schemapath>
 
<schemapath type="mysql">sql/updates/mysql</schemapath>
Line 171: Line 171:
 
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.6_-_Part_01#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]''
 
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.6_-_Part_01#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]''
  
Create a compressed file of this directory or directly download the [http://joomlacode.org/gf/download/frsrelease/11394/58229/com_helloworld-1.6-part05.zip archive] and install it using the extension manager of Joomla!1.6. You can add a menu item of this component using the menu manager in the backend.
+
Create a compressed file of this directory or directly download the [http://joomlacode.org/gf/download/frsrelease/11394/58229/com_helloworld-1.6-part05.zip archive] and install it using the extension manager of Joomla!1.7. You can add a menu item of this component using the menu manager in the backend.
  
 
== Zips ==
 
== Zips ==
Line 179: Line 179:
 
== Navigate ==
 
== Navigate ==
  
[[Developing a Model-View-Controller (MVC) Component for Joomla!1.6 - Part 04|Prev: Adding a model to the site part]]
+
[[Developing a Model-View-Controller (MVC) Component for Joomla!1.7 - Part 04|Prev: Adding a model to the site part]]
[[Developing a Model-View-Controller (MVC) Component for Joomla!1.6 - Part 06|Next: Using the database]]
+
[[Developing a Model-View-Controller (MVC) Component for Joomla!1.7 - Part 06|Next: Using the database]]
  
 
== Contributors ==
 
== Contributors ==
Line 188: Line 188:
 
[[Category:Development]]
 
[[Category:Development]]
 
[[category:Joomla! 1.6]]
 
[[category:Joomla! 1.6]]
 +
[[category:Joomla! 1.7]]
 
[[category:Manual]]
 
[[category:Manual]]

Revision as of 11:47, 17 December 2011

This page has been archived. This page contains information for an unsupported Joomla! version or is no longer relevant. It exists only as a historical reference, it will not be improved and its content may be incomplete and/or contain broken links.

This tutorial is for Joomla 1.7

Articles in this series[edit]


Introduction[edit]

This tutorial is part of the Developing a Model-View-Controller (MVC) Component for Joomla!1.7 tutorial. You are encouraged to read the previous parts of the tutorial before reading this.

Adding a variable request in the menu type[edit]

For the moment, the displayed message is always Hello World!. Joomla!1.7 gives the possibility to add parameters to menu types. In our case, this is done in the site/views/helloworld/tmpl/default.xml file:

site/views/helloworld/tmpl/default.xml

<?xml version="1.0" encoding="utf-8"?>
<metadata>
	<layout title="COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_TITLE">
		<message>COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_DESC</message>
	</layout>
	<fields name="request">
		<fieldset name="request">
			<field
				name="id"
				type="list"
				label="COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL"
				description="COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC"
				default="1"
			>
				<option value="1">Hello World!</option>
				<option value="2">Good bye World!</option>
			</field>
		</fieldset>
	</fields>
</metadata>

Two important things to note:

  • the request group of fields indicates mandatory fields
  • the array parameter that indicates that these parameters will be added in the request URL [??]

The model has to be modified in order to switch between the two different messages (which is chosen by the user with the field defined above):

site/models/helloworld.php

<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

// import Joomla modelitem library
jimport('joomla.application.component.modelitem');

/**
 * HelloWorld Model
 */
class HelloWorldModelHelloWorld extends JModelItem
{
	/**
	 * @var string msg
	 */
	protected $msg;

	/**
	 * Get the message
	 * @return string The message to be displayed to the user
	 */
	public function getMsg() 
	{
		if (!isset($this->msg)) 
		{
			$id = JRequest::getInt('id');
			switch ($id) 
			{
				case 2:
					$this->msg = 'Good bye World!';
					break;
				default:
				case 1:
					$this->msg = 'Hello World!';
					break;
			}
		}
		return $this->msg;
	}
}

Also modify your helloworld.xml file to indicate the new version:

helloworld.xml

<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="1.7.0" method="upgrade">

	<name>Hello World!</name>
	<!-- The following elements are optional and free of formatting constraints -->
	<creationDate>November 2009</creationDate>
	<author>John Doe</author>
	<authorEmail>john.doe@example.org</authorEmail>
	<authorUrl>http://www.example.org</authorUrl>
	<copyright>Copyright Info</copyright>
	<license>License Info</license>
	<!--  The version string is recorded in the components table -->
	<version>0.0.5</version>
	<!-- The description is optional and defaults to the name -->
	<description>Description of the Hello World component ...</description>

	<update> <!-- Runs on update; New in 1.7 -->
		<schemas>
			<schemapath type="mysql">sql/updates/mysql</schemapath>
		</schemas>
	</update>

	<!-- Site Main File Copy Section -->
	<!-- Note the folder attribute: This attribute describes the folder
		to copy FROM in the package to install therefore files copied
		in this section are copied from /site/ in the package -->
	<files folder="site">
		<filename>index.html</filename>
		<filename>helloworld.php</filename>
		<filename>controller.php</filename>
		<folder>views</folder>
		<folder>models</folder>
	</files>

	<administration>
		<!-- Administration Menu Section -->
		<menu>Hello World!</menu>
		<!-- Administration Main File Copy Section -->
		<!-- Note the folder attribute: This attribute describes the folder
			to copy FROM in the package to install therefore files copied
			in this section are copied from /admin/ in the package -->
		<files folder="admin">
			<!-- Admin Main File Copy Section -->
			<filename>index.html</filename>
			<filename>helloworld.php</filename>
			<!-- SQL files section -->
			<folder>sql</folder>
		</files>
	</administration>

</extension>

You can test this variable request by putting index.php?option=com_helloworld&id=1 or index.php?option=com_helloworld&id=2 in your browser address.

Packaging the component[edit]

Content of your code directory

Create a compressed file of this directory or directly download the archive and install it using the extension manager of Joomla!1.7. You can add a menu item of this component using the menu manager in the backend.

Zips[edit]

Download the zip file for this Part: [1]

Navigate[edit]

Prev: Adding a model to the site part Next: Using the database

Contributors[edit]