Castellano Joomla!2.5 DOCs

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

Agregando una vista del lado del navegante

En el framework de Joomla!2.5, los autores de componentes de terceras partes dividen su código en tres partes principales:


Configurando el controlador

En el núcleo del código de Joomla, hay una clase disponible para manejar los controladores: JController. Esta clase será extendida para ser usada en nuestro componente. En el archivo site/helloworld.php (el punto de entrada de nuestro componente Hello World), ponga estas líneas

site/helloworld.php

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

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

// Get an instance of the controller prefixed by HelloWorld
$controller = JController::getInstance('HelloWorld');

// Perform the Request task
$input = JFactory::getApplication()->input;
$controller->execute($input->getCmd('task'));

// Redirect if set by the controller
$controller->redirect();

El método estático getInstance de la calse JController creará un controlador. En el código de arriba, instanciará un objeto controlador de una clase llamada HelloWorldController. Joomla buscará la declaración de esta clase en un archivo cuoy nombre será controller.php (es un comportamiento por defecto).

Ahora, controller.php necesita ser creado y HelloWorldController necesita ser declarado y definido. De modo que con su editor de textos y administrador de archivos favoritos cree un archivo site/controller.php conteniendo

site/controller.php

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

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

/**
* Hello World Component Controller
*/

class HelloWorldController extends JController
{
}

Cuando ninguna tarea es recibida en la variable de petición, la acción por defecto será ejecutada. Por defecto es la acción display (mostrar). La clase  JController actúa como una acción. En nuestro ejemplo, mostrará una vista llamada HelloWorld.


Configurando la vista

Cuando JController quiere mostrar una vista, buscará por ciertos archivos en component/com_[nombre_componente]/views/[nombre de la vista]/ folder.

El nombre del directorio de la vista por defecto es el nombre del mismo componente. En nuestro caso el path es  component/com_helloworld/views/helloworld/.

El archivo que contendrá el código de la vista se llama view.[modo_vista].php. El modo de vista por defecto, y probablemente la única vista que un componente puede necesitar es el modo html. De modo que esto nos da nuestro nombre de archivo que es view.html.php.

Con su editor y administrador de archivos favoritos, cree un archivo site/views/helloworld/view.html.php capaz de mostrar la vista por defecto y que contenga

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 = 'Hello World';

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

El método display de la clase JView es invocado con la acción display de la clase JController. En nuestro caso, este método mostrará los datos usando el archivo tmpl/default.php. Con su editor y administrador de archivos favoritos cree el archivo  site/views/helloworld/tmpl/default.php capaz de mostrar la vista por defecto y conteniendo

site/views/helloworld/tmpl/default.php

<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<h1><?php echo $this->msg; ?></h1>

Este archivo template (plantilla) será incluído por la clase JView. Por lo tanto, aquí, $this se refiere a la clase HelloWorldViewHelloWorld.

Empaquetando el componente

Contenido de archivos de código de su directorio

Cree un archivo comprimido de este directorio e instalelo usando el administrado de extensiones de Joomla. Ud. puede probar este componente básico poniendo index.php?option=com_helloworld en la barra de direcciones de su navegador.

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.2</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>
</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>

Resultado: Ud. verá por defecto el mensaje contenido en la variable $this->msg que está en el archivo view.html.php.

Vea también

Anterior: Developing a Basic Component | Próx.: Agregando un tipo de menú a la parte del sitio