J3.x

Difference between revisions of "Developing an MVC Component/Adding a model to the site part"

From Joomla! Documentation

< J3.x:Developing an MVC Component
(Marked this version for translation)
(14 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{:J3.1:Developing a MVC Component}}
+
<noinclude><languages /></noinclude>
 +
{{:J3.1:Developing a MVC Component/<translate><!--T:23-->
 +
en</translate>}}
 +
<translate>== Introduction == <!--T:2--></translate>
 +
<translate><!--T:3-->
 +
This tutorial is part of the [[S:MyLanguage/J3.2:Developing a MVC Component|Developing a MVC Component for Joomla! 3.2]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.</translate>
 +
<translate>== Adding a model == <!--T:4--></translate>
 +
__TOC__
 +
<translate><!--T:5-->
 +
In the Joomla framework, models are responsible for managing the data. The first function that has to be written for a model is a ''get'' function. It returns data to the caller. In our case, the caller will be the ''HelloWorldViewHelloWorld'' view. By default, the model named ''HelloWorldModelHelloWorld'' residing in ''site/models/helloworld.php'' is the main model associated to this view.</translate>
  
== Introduction ==
+
So <translate><!--T:6-->
This tutorial is part of the [[J3.2:Developing a MVC Component | Developing a MVC Component for Joomla! 3.2]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.
+
let's have a quick look at the naming conventions with an example, since the naming convention are the actual magic, that make everything work:</translate>
  
== Adding a model ==
+
<translate><!--T:7-->
In the Joomla framework, models are responsible for managing the data. The first function that has to be written for a model is a ''get'' function. It returns data to the caller. In our case, the caller will be the ''HelloWorldViewHelloWorld'' view. By default, the model named ''HelloWorldModelHelloWorld'' residing in ''site/models/helloworld.php'' is the main model associated to this view.
+
The class ''HelloWorldView'''HelloWorld''''' resides in ''site/views/'''helloworld'''/view.html.php'' and will make use of the class ''HelloWorldModel'''HelloWorld''''' in the file ''site/models/'''helloworld'''.php''</translate>
  
 +
<translate><!--T:8-->
 +
So let's just assume we want to use an imaginary view ''fluffy'', you would have to have:</translate>
  
So let's have a quick look at the naming conventions with an example, since the naming convention are the actual magic, that make everything work:
+
<translate><!--T:9-->
 +
The class ''HelloWorldView'''Fluffy''''' which resides in ''site/views/'''fluffy'''/view.html.php''. The view will make use of ''HelloWorldModel'''Fluffy''''' in the file ''site/models/'''fluffy'''.php''. Note: the actual screen of the view: ''site/views/'''fluffy'''/tmpl/default.php'' is required as well to make this example work.</translate>
  
The class ''HelloWorldView'''HelloWorld''''' resides in ''site/views/'''helloworld'''/view.html.php'' and will make use of the class ''HelloWorldModel'''HelloWorld''''' in the file ''site/models/'''helloworld'''.php''
+
<translate><!--T:10-->
 +
Breaking any of these bold conventions will lead to errors or a blank page.</translate>
  
 +
<translate><!--T:11-->
 +
So back to the actual implementation of the single classes:</translate>
  
So let's just assume we want to use an imaginary view ''fluffy'', you would have to have:
+
<translate><!--T:12-->
 +
With your favorite file manager and editor put a ''site/models/helloworld.php'' file containing:</translate>
  
The class ''HelloWorldView'''Fluffy''''' which resides in ''site/views/'''fluffy'''/view.html.php''. The view will make use of ''HelloWorldModel'''Fluffy''''' in the file ''site/models/'''fluffy'''.php''. Note: the actual screen of the view: ''site/views/'''fluffy'''/tmpl/default.php'' is required as well to make this example work.
+
<span id="site/models/helloworld.php">
 +
<tt>'''''site/models/helloworld.php'''''</tt>
  
 
Breaking any of these bold conventions will lead to errors or a blank page.
 
 
 
 
So back to the actual implementation of the single classes:
 
 
With your favorite file manager and editor put a ''site/models/helloworld.php'' file containing:
 
 
<span id="site/models/helloworld.php">
 
''site/models/helloworld.php''
 
 
<source lang="php">
 
<source lang="php">
 
<?php
 
<?php
 +
/**
 +
* @package    Joomla.Administrator
 +
* @subpackage  com_helloworld
 +
*
 +
* @copyright  Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
 +
* @license    GNU General Public License version 2 or later; see LICENSE.txt
 +
*/
 +
 
// No direct access to this file
 
// No direct access to this file
 
defined('_JEXEC') or die('Restricted access');
 
defined('_JEXEC') or die('Restricted access');
Line 35: Line 49:
 
/**
 
/**
 
  * HelloWorld Model
 
  * HelloWorld Model
 +
*
 +
* @since  0.0.1
 
  */
 
  */
 
class HelloWorldModelHelloWorld extends JModelItem
 
class HelloWorldModelHelloWorld extends JModelItem
 
{
 
{
 
/**
 
/**
* @var string msg
+
* @var string message
 
*/
 
*/
protected $msg;
+
protected $message;
  
 
/**
 
/**
 
* Get the message
 
* Get the message
* @return string The message to be displayed to the user
+
        *
 +
* @return string The message to be displayed to the user
 
*/
 
*/
public function getMsg()  
+
public function getMsg()
 
{
 
{
if (!isset($this->msg))  
+
if (!isset($this->message))
 
{
 
{
$this->msg = 'Hello World!';
+
$this->message = 'Hello World!';
 
}
 
}
return $this->msg;
+
 
 +
return $this->message;
 
}
 
}
 
}
 
}
Line 59: Line 77:
 
</span>
 
</span>
  
The ''HelloWorldViewHelloWorld'' class asks the model for data using the ''get'' method of the ''JViewLegacy'' class:
+
<translate><!--T:13-->
 +
The ''HelloWorldViewHelloWorld'' class asks the model for data using the ''get'' method of the ''JViewLegacy'' class:</translate>
  
 
<span id="site/views/helloworld/view.html.php">
 
<span id="site/views/helloworld/view.html.php">
''site/views/helloworld/view.html.php''
+
<tt>'''''site/views/helloworld/view.html.php'''''</tt>
<source lang="php">
+
 
 +
<source lang="php" highlight="30">
 
<?php
 
<?php
 
/**
 
/**
* @package Joomla.Administrator
+
* @package     Joomla.Administrator
* @subpackage com_helloworld
+
* @subpackage com_helloworld
*
+
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
+
* @copyright   Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
+
* @license     GNU General Public License version 2 or later; see LICENSE.txt
*/
+
*/
+
 
 
// No direct access to this file
 
// No direct access to this file
 
defined('_JEXEC') or die('Restricted access');
 
defined('_JEXEC') or die('Restricted access');
+
 
 
/**
 
/**
* HTML View class for the HelloWorld Component
+
* HTML View class for the HelloWorld Component
*
+
*
* @since 0.0.1
+
* @since 0.0.1
*/
+
*/
 
class HelloWorldViewHelloWorld extends JViewLegacy
 
class HelloWorldViewHelloWorld extends JViewLegacy
 
{
 
{
 
/**
 
/**
        * Display the Hello World view
+
* Display the Hello World view
        *
+
*
        * @param  string  $tpl  The name of the template file to parse; automatically searches through the template paths.
+
* @param  string  $tpl  The name of the template file to parse; automatically searches through the template paths.
        *
+
*
        * @return  void
+
* @return  void
        */
+
*/
// Overwriting JViewLegacy display method
+
function display($tpl = null)
public function display($tpl = null)  
 
 
{
 
{
 
// Assign data to the view
 
// Assign data to the view
 
$this->msg = $this->get('Msg');
 
$this->msg = $this->get('Msg');
+
 
 
// Check for errors.
 
// Check for errors.
if (count($errors = $this->get('Errors')))  
+
if (count($errors = $this->get('Errors')))
 
{
 
{
 
JLog::add(implode('<br />', $errors), JLog::WARNING, 'jerror');
 
JLog::add(implode('<br />', $errors), JLog::WARNING, 'jerror');
 +
 
return false;
 
return false;
 
}
 
}
+
 
 
// Display the view
 
// Display the view
 
parent::display($tpl);
 
parent::display($tpl);
 
}
 
}
 
}
 
}
 +
 
</source>
 
</source>
 
</span>
 
</span>
  
Note: $this->get() is a member of JViewLegacy::get which is a proxy to get* methods of the default model where * is populated with the value of the first parameter passed to get()
+
<translate><!--T:14-->
 +
Note: $this->get() is a member of JViewLegacy::get which is a proxy to get* methods of the default model where * is populated with the value of the first parameter passed to get()</translate>
  
Also modify your ''helloworld.xml'' file to indicate use of models and the new version:
+
<translate><!--T:15-->
 +
Also modify your ''helloworld.xml'' file to indicate use of models and the new version:</translate>
  
 
<span id="helloworld.xml">
 
<span id="helloworld.xml">
''helloworld.xml''
+
<tt>'''''helloworld.xml'''''</tt>
<source lang="xml">
+
 
 +
<source lang="xml" highlight="13,32">
 
<?xml version="1.0" encoding="utf-8"?>
 
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="3.2" method="upgrade">
+
<extension type="component" version="3.2.0" method="upgrade">
+
 
 
<name>Hello World!</name>
 
<name>Hello World!</name>
 
<!-- The following elements are optional and free of formatting constraints -->
 
<!-- The following elements are optional and free of formatting constraints -->
Line 132: Line 156:
 
<!-- The description is optional and defaults to the name -->
 
<!-- The description is optional and defaults to the name -->
 
<description>Description of the Hello World component ...</description>
 
<description>Description of the Hello World component ...</description>
+
 
 
<update> <!-- Runs on update; New since J2.5 -->
 
<update> <!-- Runs on update; New since J2.5 -->
 
<schemas>
 
<schemas>
<schemapath type="mysql">sql/updates/mysql/</schemapath>
+
<schemapath type="mysql">sql/updates/mysql</schemapath>
 
</schemas>
 
</schemas>
 
</update>
 
</update>
+
 
 
<!-- Site Main File Copy Section -->
 
<!-- Site Main File Copy Section -->
 
<!-- Note the folder attribute: This attribute describes the folder
 
<!-- Note the folder attribute: This attribute describes the folder
Line 150: Line 174:
 
<folder>models</folder>
 
<folder>models</folder>
 
</files>
 
</files>
+
 
 
<administration>
 
<administration>
 
<!-- Administration Menu Section -->
 
<!-- Administration Menu Section -->
<menu>Hello World!</menu>
+
<menu link='index.php?option=com_helloworld'>Hello World!</menu>
 
<!-- Administration Main File Copy Section -->
 
<!-- Administration Main File Copy Section -->
 
<!-- Note the folder attribute: This attribute describes the folder
 
<!-- Note the folder attribute: This attribute describes the folder
Line 166: Line 190:
 
</files>
 
</files>
 
</administration>
 
</administration>
+
 
 
</extension>
 
</extension>
 
</source>
 
</source>
 
</span>
 
</span>
  
== Packaging the component ==
+
<translate>== Packaging the component == <!--T:16--></translate>
  
 
Content of your code directory
 
Content of your code directory
 
* ''[[#helloworld.xml|helloworld.xml]]''
 
* ''[[#helloworld.xml|helloworld.xml]]''
* ''[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/helloworld.php|site/helloworld.php]]''
+
* ''[[S:MyLanguage/J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/helloworld.php|site/helloworld.php]]''
* ''[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/index.html]]''
+
* ''[[S:MyLanguage/J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/index.html]]''
* ''[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/controller.php|site/controller.php]]''
+
* ''[[S:MyLanguage/J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/controller.php|site/controller.php]]''
* ''[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/index.html]]''
+
* ''[[S:MyLanguage/J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/index.html]]''
* ''[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/index.html]]''
+
* ''[[S:MyLanguage/J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/index.html]]''
* ''[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]''
+
* ''[[S:MyLanguage/J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]''
* ''[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/tmpl/index.html]]''
+
* ''[[S:MyLanguage/J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/tmpl/index.html]]''
* ''[[J3.2:Developing_a_MVC_Component/Adding_a_menu_type_to_the_site_part#site/views/helloworld/tmpl/default.xml|site/views/helloworld/tmpl/default.xml]]''
+
* ''[[S:MyLanguage/J3.2:Developing_a_MVC_Component/Adding_a_menu_type_to_the_site_part#site/views/helloworld/tmpl/default.xml|site/views/helloworld/tmpl/default.xml]]''
* ''[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]''
+
* ''[[S:MyLanguage/J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]''
* ''[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/models/index.html]]''
+
* ''[[S:MyLanguage/J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/models/index.html]]''
 
* ''[[#site/models/helloworld.php|site/models/helloworld.php]]''
 
* ''[[#site/models/helloworld.php|site/models/helloworld.php]]''
* ''[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/index.html]]''
+
* ''[[S:MyLanguage/J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/index.html]]''
* ''[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#admin/helloworld.php|admin/helloworld.php]]''
+
* ''[[S:MyLanguage/J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#admin/helloworld.php|admin/helloworld.php]]''
* ''[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/index.html]]''
+
* ''[[S:MyLanguage/J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/index.html]]''
* ''[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/index.html]]''
+
* ''[[S:MyLanguage/J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/index.html]]''
* ''[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/mysql/index.html]]''
+
* ''[[S:MyLanguage/J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/mysql/index.html]]''
* ''[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]''
+
* ''[[S:MyLanguage/J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#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 [https://github.com/joomla/Joomla-3.2-Hello-World-Component/archive/step-4-adding-a-site-model.zip archive] and install it using the extension manager of Joomla. You can add a menu item of this component using the menu manager in the backend.
+
<translate><!--T:17-->
 
+
Create a compressed file of this directory or directly download the [https://github.com/scionescire/Joomla-3.2-Hello-World-Component/archive/step-4-adding-a-site-model.zip archive] and install it using the extension manager of Joomla. You can add a menu item of this component using the menu manager in the backend.</translate>
{{notice|Please create a pull request or issue at https://github.com/joomla/Joomla-3.2-Hello-World-Component for any code descprepancies or if editing any of the source code on this page.}}
 
  
{{:J3.2:Developing a MVC Component/Navigate
+
{{notice|<translate><!--T:18-->
|prev=Adding a menu type to the site part <!-- previous article subpage name -->
+
Please create a pull request or issue at https://github.com/joomla/Joomla-3.2-Hello-World-Component for any code descprepancies or if editing any of the source code on this page.</translate>}}
|next=Adding a variable request in the menu type <!-- next article subpage name -->}}
 
  
== Contributors ==
+
<translate>== Contributors == <!--T:21--></translate>
 
*[[User:cdemko|Christophe Demko]]
 
*[[User:cdemko|Christophe Demko]]
 
*[[User:oaksu|Ozgur Aksu]]
 
*[[User:oaksu|Ozgur Aksu]]
 
*[[User:Jossnaz|Lukas Meier]]
 
*[[User:Jossnaz|Lukas Meier]]
 
*[[User:betweenbrain|Matt Thomas]]
 
*[[User:betweenbrain|Matt Thomas]]
 +
*[[User:Scionescire|Scionescire]]
 +
 +
<div class="row">
 +
<div class="large-6 columns">{{Basic button|<translate><!--T:24-->
 +
S:MyLanguage/J3.x:Developing_a_MVC_Component/Adding a menu type to the site part|Prev: Adding a menu type to the site part</translate>|class=expand success}}</div>
 +
<div class="large-6 columns">{{Basic button|<translate><!--T:25-->
 +
S:MyLanguage/J3.x:Developing_a_MVC_Component/Adding a variable request in the menu type|Next: Adding a variable request in the menu type</translate>|class=expand}}</div>
 +
</div>
  
 +
<noinclude>
 +
<translate>
 +
<!--T:26-->
 +
[[Category:Joomla! 3.x]]
 
[[Category:Joomla! 3.0]]
 
[[Category:Joomla! 3.0]]
 
[[Category:Joomla! 3.1]]
 
[[Category:Joomla! 3.1]]
 
[[Category:Joomla! 3.2]]
 
[[Category:Joomla! 3.2]]
 +
[[Category:Joomla! 3.3]]
 +
[[Category:Joomla! 3.4]]
 
[[Category:Beginner Development]]
 
[[Category:Beginner Development]]
 
[[Category:Component Development]]
 
[[Category:Component Development]]
 +
[[Category:Tutorials]]
 +
[[Category:Tutorials in a Series]]
 +
</translate>
 +
</noinclude>

Revision as of 14:08, 1 July 2015

Other languages:
English • ‎Nederlands • ‎español • ‎français • ‎العربية • ‎中文(台灣)‎
Joomla! 
3.x
Tutorial
Developing a MVC Component



This is a multiple-article series of tutorials on how to develop a Model-View-Controller Component for Joomla! VersionJoomla 3.x.

Begin with the Introduction, and navigate the articles in this series by using the navigation button at the bottom or the box to the right (the Articles in this series).



Introduction[edit]

This tutorial is part of the Developing a MVC Component for Joomla! 3.2 tutorial. You are encouraged to read the previous parts of the tutorial before reading this.

Adding a model[edit]

In the Joomla framework, models are responsible for managing the data. The first function that has to be written for a model is a get function. It returns data to the caller. In our case, the caller will be the HelloWorldViewHelloWorld view. By default, the model named HelloWorldModelHelloWorld residing in site/models/helloworld.php is the main model associated to this view.

So let's have a quick look at the naming conventions with an example, since the naming convention are the actual magic, that make everything work:

The class HelloWorldViewHelloWorld resides in site/views/helloworld/view.html.php and will make use of the class HelloWorldModelHelloWorld in the file site/models/helloworld.php

So let's just assume we want to use an imaginary view fluffy, you would have to have:

The class HelloWorldViewFluffy which resides in site/views/fluffy/view.html.php. The view will make use of HelloWorldModelFluffy in the file site/models/fluffy.php. Note: the actual screen of the view: site/views/fluffy/tmpl/default.php is required as well to make this example work.

Breaking any of these bold conventions will lead to errors or a blank page.

So back to the actual implementation of the single classes:

With your favorite file manager and editor put a site/models/helloworld.php file containing:

site/models/helloworld.php

<?php
/**
 * @package     Joomla.Administrator
 * @subpackage  com_helloworld
 *
 * @copyright   Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

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

/**
 * HelloWorld Model
 *
 * @since  0.0.1
 */
class HelloWorldModelHelloWorld extends JModelItem
{
	/**
	 * @var string message
	 */
	protected $message;

	/**
	 * Get the message
         *
	 * @return  string  The message to be displayed to the user
	 */
	public function getMsg()
	{
		if (!isset($this->message))
		{
			$this->message = 'Hello World!';
		}

		return $this->message;
	}
}

The HelloWorldViewHelloWorld class asks the model for data using the get method of the JViewLegacy class:

site/views/helloworld/view.html.php

<?php
/**
 * @package     Joomla.Administrator
 * @subpackage  com_helloworld
 *
 * @copyright   Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

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

/**
 * HTML View class for the HelloWorld Component
 *
 * @since  0.0.1
 */
class HelloWorldViewHelloWorld extends JViewLegacy
{
	/**
	 * Display the Hello World view
	 *
	 * @param   string  $tpl  The name of the template file to parse; automatically searches through the template paths.
	 *
	 * @return  void
	 */
	function display($tpl = null)
	{
		// Assign data to the view
		$this->msg = $this->get('Msg');

		// Check for errors.
		if (count($errors = $this->get('Errors')))
		{
			JLog::add(implode('<br />', $errors), JLog::WARNING, 'jerror');

			return false;
		}

		// Display the view
		parent::display($tpl);
	}
}

Note: $this->get() is a member of JViewLegacy::get which is a proxy to get* methods of the default model where * is populated with the value of the first parameter passed to get()

Also modify your helloworld.xml file to indicate use of models and the new version:

helloworld.xml

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

	<name>Hello World!</name>
	<!-- The following elements are optional and free of formatting constraints -->
	<creationDate>January 2014</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.4</version>
	<!-- The description is optional and defaults to the name -->
	<description>Description of the Hello World component ...</description>

	<update> <!-- Runs on update; New since J2.5 -->
		<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 link='index.php?option=com_helloworld'>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>

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. You can add a menu item of this component using the menu manager in the backend.

Info non-talk.png
General Information

Please create a pull request or issue at https://github.com/joomla/Joomla-3.2-Hello-World-Component for any code descprepancies or if editing any of the source code on this page.

Contributors[edit]