Castellano Joomla!2.5 DOCs

Desarrollando un componente Modelo-Vista-Controlador para Joomla Joomla 2.5


Agregando un modelo del lado del navegante

En el framework de Joomla, los modelos son responsables del monejo de los datos. La primer función que debe ser escrita para un modelo es un función de "tomar / recibir" (get function). Esta retornará datos quien la llame. En nuestro caso, la que la llamará será la vista HelloWorldViewHelloWorld. POr defecto, elmodelo llamado HelloWorldModelHelloWorld es el modelo principal asociado a esta vista. Con su administrador de archivos y editor de textos favorito ponga un archivo site/models/helloworld.php conteniendo:

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))
{
$this->msg = 'Hello World!';
}
return $this->msg;
}
}

La clase HelloWorldViewHelloWorld la pide datos al modelo usando el método get de la clase JView:


site/views/helloworld/view.html.php

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

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

/**
* HTML View class for the HelloWorld Component
*/

class HelloWorldViewHelloWorld extends JView
{
// Overwriting JView display method
function display($tpl = null)
{
// Assign data to the view
$this->msg = $this->get('Msg');

// Check for errors.
if (count($errors = $this->get('Errors')))
{

JError::raiseError(500, implode('<br />', $errors));
return false;
}
// Display the view
parent::display($tpl);
}
}

Nota: $this->get() es un miembro de JView::get el cual es un proxy to get* methods of the default model where * is populated with the value of the first parameter passed to get()

Nota: La clase JError no se usa mas, en su lugar use la clase JLog o una Excepción PHP.

Tambien modifique su archivo helloworld.xml para indicar el uso de modelos y la nueva versión:

 

helloworld.xml

<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="2.5.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.4</version>
<!-- The description is optional and defaults to the name -->
<description>Description of the Hello World component ...</description>

<update> <!-- Runs on update; New in 2.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>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>

Empaquetando el componente

Contenido de su directorio de código

Cree un archivo comprimido de este directorio e instalelo usando el administrador de extensiones de Joomla. Ud. puede agregar un item de menu de este componente usando el administrador de menu en la administración de Joomla.

Vea también

Ant.: Agregando un tipo de menu | Próx.: Agregando una solicitud de variable en el tipo de menu