﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Alexandre JULIEN &#187; Joomla</title>
	<atom:link href="http://www.alexandre-julien.com/category/php/joomla/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.alexandre-julien.com</link>
	<description>Industrialisation des développements, PHP, .NET, jQuery, HTML5, Web, …</description>
	<lastBuildDate>Sun, 22 Jan 2012 20:26:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Joomla! API Framework MVC 1.5 : création d&#039;une application (tuto CRUD)</title>
		<link>http://www.alexandre-julien.com/php/joomla/joomla-api-framework-mvc-1-5-creation-dune-application-tuto-crud/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=joomla-api-framework-mvc-1-5-creation-dune-application-tuto-crud</link>
		<comments>http://www.alexandre-julien.com/php/joomla/joomla-api-framework-mvc-1-5-creation-dune-application-tuto-crud/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 19:38:00 +0000</pubDate>
		<dc:creator>Alexandre JULIEN</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[cmf]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[component]]></category>
		<category><![CDATA[composant]]></category>
		<category><![CDATA[crud]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[tuto]]></category>
		<category><![CDATA[tutoriel]]></category>

		<guid isPermaLink="false">http://www.alexandre-julien.com/?p=790</guid>
		<description><![CDATA[
Voici un tutorial pour créer une application &#171;&#160;composant&#160;&#187; sur Joomla! grâce à la nouvelle API basé sur Joomla framework MVC 1.5
Le gros avantage de la version 1.5 par rapport à la version 1.0, c&#8217;est qu&#8217;elle propose une API bien mieux construire et rend beaucoup plus agréable le développement  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.alexandre-julien.com/wp-content/uploads/2009/09/joomla-logo-vert-color1.png"><img class="aligncenter size-full wp-image-794" title="Joomla! Api" src="http://www.alexandre-julien.com/wp-content/uploads/2009/09/joomla-logo-vert-color1.png" alt="Joomla! Api" width="500" height="342" /></a></p>
<p>Voici un tutorial pour créer une application &laquo;&nbsp;composant&nbsp;&raquo; sur Joomla! grâce à la nouvelle API basé sur Joomla framework MVC 1.5</p>
<p>Le gros avantage de la version 1.5 par rapport à la version 1.0, c&#8217;est qu&#8217;elle propose une API bien mieux construire et rend beaucoup plus agréable le développement d&#8217;applications. Le nouveau framework est basé sur le design-pattern MVC bien que la couche modèle est quelque peu inutile, étant donné que Joomla 1.5 ne fonctionne avec rien d&#8217;autre que MySQL, cela dit, on a le choix entre les drivers &laquo;&nbsp;mysql&nbsp;&raquo; ou &laquo;&nbsp;mysqli&nbsp;&raquo;.</p>
<p>Nous illustrerons une application simple qui saisie des utilisateurs dans une table et qui les affiche sous la forme d&#8217;une liste. Cette application nous permettra de voir d&#8217;une façon pragmatique la structure des applications Joomla! et les fonctions de base du framework : création d&#8217;une classe modèle (ajout, mise à jour, suppression et requêtes en base de données), création d&#8217;un controller avec les actions de base (une action pour création et édition et une autre pour le listing), gestion des templates, redirections et notifications des erreurs et succès.</p>
<p>Télécharger Joomla! 1.5.x : <a href="http://www.alexandre-julien.com/wp-content/uploads/2009/09/Joomla_1.5.15-Stable-Full_Package1.zip">Joomla_1.5.15</a></p>
<p>Télécharger l&#8217;application : <a href="http://www.alexandre-julien.com/wp-content/uploads/2009/09/com_crud.zip">Joomla! Crud Tutoriel</a></p>
<p><span id="more-790"></span></p>
<p>Voici ci-dessous la hiérarchie de notre application, il s&#8217;agit d&#8217;un répertoire à créer dans le dossier &laquo;&nbsp;components&nbsp;&raquo; de Joomla! :</p>
<p><a href="http://www.alexandre-julien.com/wp-content/uploads/2009/09/joomla-component-hierarchy1.png"><img class="aligncenter size-full wp-image-798" title="joomla! component hierarchy" src="http://www.alexandre-julien.com/wp-content/uploads/2009/09/joomla-component-hierarchy1.png" alt="joomla! component hierarchy" width="198" height="254" /></a></p>
<p>Voici le script SQL correspondant à la table &laquo;&nbsp;jos_crud_users&nbsp;&raquo; qui contient les données :</p>
<pre class="brush: sql; title: ; notranslate">

--
-- Structure de la table `jos_crud_users`
--

CREATE TABLE IF NOT EXISTS `jos_crud_users` (
 `user_id` int(11) NOT NULL AUTO_INCREMENT,
 `user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
 `user_lastname` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
 `user_email` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
 PRIMARY KEY (`user_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
</pre>
<p>Voici le premier fichier à créer, &laquo;&nbsp;crud.php&nbsp;&raquo; il s&#8217;agit du fichier d&#8217;entrée qui est exécuté dès qu&#8217;un utilisateur visite l&#8217;application :</p>
<pre class="brush: php; title: ; notranslate">

&lt;?php
/**
 * @package    Joomla.Crud
 * @subpackage Components
 * components/com_crud/crud.php
 * @link http://www.alexandre-julien.com
 * @author Alexandre JULIEN
 */

// Pas d'accès direct à la page
defined( '_JEXEC' ) or die( 'Restricted access' );

// Requiert la classe des contrôleurs

require_once( JPATH_COMPONENT.DS.'controller.php' );

// Requiert un contrôleur spécifique si demander
if($controller = JRequest::getVar('controller')) {
 $path = JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php';
 if (file_exists($path)) {
 require_once $path;
 } else {
 $controller = '';
 }
}

// Instanciation du contrôleur
$classname    = 'CrudController'.$controller;
$controller   = new $classname( );

// Execute la tâche demandée
$controller-&gt;execute( JRequest::getVar( 'task' ) );

// Redirection si elle est sollicitée par le contrôleur
$controller-&gt;redirect();
?&gt;
</pre>
<p>Voici maintenant le contrôleur, chaque méthode correspond à une tâche accessible par l&#8217;url : &laquo;&nbsp;index.php?option=com_crud&amp;task=lamethode&nbsp;&raquo;</p>
<pre class="brush: php; title: ; notranslate">

&lt;?php
/**
 * @package    Joomla.Crud
 * @subpackage Components
 * @link http://www.alexandre-julien.com
 * @license GNU / GPL
 * @author Alexandre JULIEN
 */

// No direct access

defined( '_JEXEC' ) or die( 'Restricted access' );

jimport('joomla.application.component.controller');

/**
 * Hello World Component Controller
 *
 * @package    Joomla.Tutorials
 * @subpackage Components
 */
class CrudController extends JController
{
 /**
 * Méthode d'affichage
 *
 * @access    public
 */
 function display()
 {
 $model = $this-&gt;getModel();
 $view = $this-&gt;getView('list', 'html');
 $view-&gt;users = $model-&gt;getAllUsers();
 $view-&gt;display();
 }

 /**
 * Formulaire de création d'un utilisateur
 * @return unknown_type
 */
 function add()
 {
 $view =&amp; $this-&gt;getView('edit', 'html');
 $view-&gt;display();
 }

 /**
 * Formulaire d'édition d'un utilisateur
 * @return unknown_type
 */
 function edit()
 {
 if (isset($_GET) &amp;&amp; isset($_GET['id']))
 {
 $view = $this-&gt;getView ('edit', 'html');
 $model =&amp; $this-&gt;getModel();
 $view-&gt;data = $model-&gt;getUser($_GET['id']);
 $view-&gt;display();
 }
 else
 {
 $this-&gt;setRedirect('index.php?option=com_crud', &quot;L'identifiant est manquant&quot;, 'error');
 }
 }

 /**
 * Sauvegarde d'un utilisateur
 * @return unknown_type
 */
 function save()
 {
 if (isset($_POST))
 {
 $model =&amp; $this-&gt;getModel();
 if (isset($_POST['id']) &amp;&amp; $model-&gt;getUser($_POST['id']))
 {
 $model-&gt;updateUser($_POST);
 }
 else
 {
 $model-&gt;addUser($_POST);
 }
 $this-&gt;setRedirect('index.php?option=com_crud', &quot;Les modifications ont bien été enregistrées&quot;, 'message');
 }
 else
 {
 $this-&gt;setRedirect('index.php?option=com_crud', &quot;Les données sont manquantes&quot;, 'error');
 }
 }

 /**
 * Suppression d'un utilisateur
 * @return unknown_type
 */
 function delete()
 {
 if (isset($_GET) &amp;&amp; isset($_GET['id']))
 {
 $model =&amp; $this-&gt;getModel();
 $model-&gt;removeUser($_GET['id']);
 $this-&gt;setRedirect('index.php?option=com_crud', &quot;L'utilisateur a bien été supprimé&quot;, 'message');
 }
 else
 {
 $this-&gt;setRedirect('index.php?option=com_crud', &quot;L'identifiant est manquant&quot;, 'error');
 }
 }
}
?&gt;
</pre>
<p>La couche modèle qui gère les transactions avec la base de données dans le fichiers &laquo;&nbsp;models/crud.php&nbsp;&raquo; :</p>
<pre class="brush: php; title: ; notranslate">

&lt;?php
/**
 * Crud modèle pour le composant Crud
 *
 * @package    Joomla.Crud
 * @subpackage Components
 * @link http://www.alexandre-julien.com
 * @license    GNU/GPL
 * @author Alexandre JULIEN
 */

// Pas d'accès direct

defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.application.component.model' );

/**
 * Modèle Crud
 *
 * @package    Joomla.Crud
 * @subpackage Components
 */
class CrudModelCrud extends JModel
{
 /**
 * Retourne tous les enregistrements de la table
 * @return unknown_type
 */
 function getAllUsers()
 {
 $query = 'SELECT * FROM #__crud_users';
 return $this-&gt;_getList ($query);
 }

 /**
 * Retourne l'enregistrement en fonction de l'identifiant de l'utilisateur
 * @param $user_id
 * @return unknown_type
 */
 function getUser ($user_id)
 {
 $query = 'SELECT * FROM #__crud_users WHERE user_id = '.(int)$user_id;
 $result = $this-&gt;_getList ($query);
 return $result[0];
 }

 /**
 * Ajoute un enregistrement
 * @param $values
 * @return unknown_type
 */
 function addUser ($values)
 {
 $db =&amp; JFactory::getDBO();

 $row = new stdClass();
 $row-&gt;user_name = $values['user_name'];
 $row-&gt;user_lastname = $values['user_lastname'];
 $row-&gt;user_email = $values['user_email'];

 $db-&gt;insertObject ('#__crud_users', $row);
 }

 /**
 * Met à jour un enregistrement
 * @param $values
 * @return unknown_type
 */
 function updateUser ($values)
 {
 $db =&amp; JFactory::getDBO();

 $row = new stdClass();
 $row-&gt;user_id = $values['user_id'];
 $row-&gt;user_name = $values['user_name'];
 $row-&gt;user_lastname = $values['user_lastname'];
 $row-&gt;user_email = $values['user_email'];

 $db-&gt;updateObject ('#__crud_users', $row, 'user_id');
 }

 /**
 * Supprime un enregistrement
 * @param $id
 * @return unknown_type
 */
 function removeUser ($id)
 {
 $db =&amp; JFactory::getDBO();
 $query = 'DELETE FROM #__crud_users WHERE user_id = '.(int)$id;
 $db-&gt;setQuery($query);
 return $this-&gt;query();
 }
}
?&gt;
</pre>
<p>Voici un exemple de fichier &laquo;&nbsp;View.html.php&nbsp;&raquo;, il s&#8217;agit de celui de l&#8217;écran de listing :</p>
<pre class="brush: php; title: ; notranslate">

&lt;?php
/**
 * @package    Joomla.Crud
 * @subpackage Components
 * @link http://www.alexandre-julien.com
 * @license   GNU/GPL
 * @author Alexandre JULIEN
 */

// Pas d'accès direct

defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.application.component.view');

/**
 * HTML View pour afficher la liste des utilisateurs
 *
 * @package    Crud
 */

class CrudViewList extends JView
{
 function display($tpl = null)
 {
 $this-&gt;assignRef('data', $this-&gt;users);
 parent::display($tpl);
 }
}
?&gt;
</pre>
<p>Le template de la vue &laquo;&nbsp;edit&nbsp;&raquo; :</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php

// Pas d'accès direct

defined('_JEXEC') or die('Restricted access'); ?&gt;

&lt;h1&gt;Edition d'un utilisateur&lt;/h1&gt;
&lt;form name=&quot;utilisateur&quot; method=&quot;POST&quot;
	action=&quot;&lt;?php echo JRoute::_('index.php?option=com_crud&amp;task=save') ?&gt;&quot;&gt;
&lt;input type=&quot;hidden&quot; name=&quot;user_id&quot; value=&quot;&lt;?php echo $this-&gt;data-&gt;user_id ?&gt;&quot; /&gt;
&lt;table&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;th&gt;Prénom de l'utilisateur&lt;/th&gt;
			&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;user_name&quot;
				value=&quot;&lt;?php if (isset($this-&gt;data)) { echo $this-&gt;data-&gt;user_name; } ?&gt;&quot; /&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;th&gt;Nom de l'utilisateur&lt;/th&gt;
			&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;user_lastname&quot;
				value=&quot;&lt;?php if(isset($this-&gt;data)) { echo $this-&gt;data-&gt;user_lastname; } ?&gt;&quot; /&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;th&gt;Email de l'utilisateur&lt;/th&gt;
			&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;user_email&quot;
				value=&quot;&lt;?php if(isset($this-&gt;data)) { echo $this-&gt;data-&gt;user_email; } ?&gt;&quot;&gt;&lt;/input&gt;&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;input type=&quot;submit&quot; value=&quot;Enregistrer&quot; /&gt;&lt;/form&gt;
</pre>
<p>Le template de la vue &laquo;&nbsp;list&nbsp;&raquo; :</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php

// Pas d'accès direct

defined('_JEXEC') or die('Restricted access'); ?&gt;

&lt;h1&gt;Liste des utilisateurs&lt;/h1&gt;

&lt;table&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;th&gt;Nom&lt;/th&gt;
			&lt;th&gt;Prénom&lt;/th&gt;
			&lt;th&gt;Adresse e-mail&lt;/th&gt;
			&lt;th&gt;Actions&lt;/th&gt;
		&lt;/tr&gt;
		&lt;?php foreach ($this-&gt;data as $key =&gt; $value) { ?&gt;
		&lt;tr&gt;
			&lt;td&gt;&lt;?php echo $value-&gt;user_lastname ?&gt;&lt;/td&gt;
			&lt;td&gt;&lt;?php echo $value-&gt;user_name ?&gt;&lt;/td&gt;
			&lt;td&gt;&lt;?php echo $value-&gt;user_email ?&gt;&lt;/td&gt;
			&lt;td&gt;&lt;a
				href=&quot;&lt;?php echo JRoute::_('index.php?option=com_crud&amp;task=edit&amp;id='.(int)$value-&gt;user_id) ?&gt;&quot;&gt;
			Editer &lt;/a&gt; | &lt;a
				href=&quot;&lt;?php echo JRoute::_('index.php?option=com_crud&amp;task=delete&amp;id='.(int)$value-&gt;user_id) ?&gt;&quot;&gt;Supprimer&lt;/a&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;?php } ?&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;a href=&quot;&lt;?php echo JRoute::_('index.php?option=com_crud&amp;task=add') ?&gt;&quot;&gt;
Créer un utilisateur &lt;/a&gt;
</pre>
<p>On pourra également créer un package Joomla! qui automatisera l&#8217;installation des fichiers et des tables SQL grâce à un fichier de configuration d&#8217;installation &laquo;&nbsp;hello.xml&nbsp;&raquo; :</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;!DOCTYPE install SYSTEM &quot;http://www.joomla.org/xml/dtd/1.5/component-install.dtd&quot;&gt;
&lt;install type=&quot;component&quot; version=&quot;1.5.0&quot;&gt;
  &lt;name&gt;crud&lt;/name&gt;
  &lt;!-- Les éléments suivants sont optionnels  --&gt;
  &lt;creationDate&gt;2009 09 21&lt;/creationDate&gt;
  &lt;author&gt;Alexandre JULIEN&lt;/author&gt;
  &lt;authorEmail&gt;mail@alexandre.julien.com&lt;/authorEmail&gt;
  &lt;authorUrl&gt;http://www.alexandre-julien.com&lt;/authorUrl&gt;
  &lt;copyright&gt;Le blog d'Alex&lt;/copyright&gt;
  &lt;license&gt;GNU / GPL&lt;/license&gt;
  &lt;!--  Version du composant --&gt;
  &lt;version&gt;stable 1.0&lt;/version&gt;
  &lt;!-- Description du Composant --&gt;
  &lt;description&gt;Petit tutoriel CRUD pour illustrer Joomla! MVC Framework&lt;/description&gt;

  &lt;!-- Fichiers d'installation --&gt;
  &lt;files folder=&quot;site&quot;&gt;
    &lt;filename&gt;crud.php&lt;/filename&gt;
    &lt;filename&gt;controller.php&lt;/filename&gt;
    &lt;filename&gt;models/crud.php&lt;/filename&gt;
    &lt;filename&gt;views/edit/view.html.php&lt;/filename&gt;
    &lt;filename&gt;views/edit/tmpl/default.php&lt;/filename&gt;
    &lt;filename&gt;views/list/view.html.php&lt;/filename&gt;
    &lt;filename&gt;views/list/tmpl/default.php&lt;/filename&gt;
  &lt;/files&gt;
  &lt;install&gt;
    &lt;sql&gt;
      &lt;file charset=&quot;uft8&quot; driver=&quot;mysql&quot;&gt;install.sql&lt;/file&gt;
      &lt;file charset=&quot;utf8&quot; driver=&quot;mysqli&quot;&gt;install.sql&lt;/file&gt;
    &lt;/sql&gt;
  &lt;/install&gt;
  &lt;uninstall&gt;
    &lt;sql&gt;
      &lt;file charset=&quot;utf8&quot; driver=&quot;mysql&quot;&gt;uninstall.sql&lt;/file&gt;
      &lt;file charset=&quot;utf8&quot; driver=&quot;mysqli&quot;&gt;uninstall.sql&lt;/file&gt;
    &lt;/sql&gt;
  &lt;/uninstall&gt;
  &lt;administration&gt;
    &lt;!-- Administration Menu Section --&gt;
    &lt;menu&gt;Joomla! CRUD&lt;/menu&gt;

    &lt;!-- Fichiers de la partie administration --&gt;
    &lt;files folder=&quot;admin&quot;&gt;
      &lt;filename&gt;index.html&lt;/filename&gt;
      &lt;filename&gt;install.sql&lt;/filename&gt;
      &lt;filename&gt;uninstall.sql&lt;/filename&gt;
    &lt;/files&gt;
  &lt;/administration&gt;
&lt;/install&gt;
</pre>
<p>Voici des &laquo;&nbsp;screenshots&nbsp;&raquo; de notre application finale :</p>
<p><a href="http://www.alexandre-julien.com/wp-content/uploads/2009/09/add_joomla1.png"><img class="aligncenter size-full wp-image-806" title="Joomla Crud Tuto MVC" src="http://www.alexandre-julien.com/wp-content/uploads/2009/09/add_joomla1.png" alt="Joomla Crud Tuto MVC" width="595" height="353" /></a><br />
<a href="http://www.alexandre-julien.com/wp-content/uploads/2009/09/list_joomla.png"><img class="aligncenter size-full wp-image-807" title="List Joomla Tuto MVC" src="http://www.alexandre-julien.com/wp-content/uploads/2009/09/list_joomla.png" alt="List Joomla Tuto MVC" width="594" height="383" /></a></p>
<p>L&#8217;application est disponible ici dans cette archive : <a href="http://www.alexandre-julien.com/wp-content/uploads/2009/09/crud.zip">Tutoriel Joomla! CRUD (installation package)</a></p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 5658px; width: 1px; height: 1px;">&lt;?php</p>
<p>// Pas d&#8217;accÃ¨s direct</p>
<p>defined(&#8216;_JEXEC&#8217;) or die(&#8216;Restricted access&#8217;); ?&gt;</p>
<p>&lt;h1&gt;Edition d&#8217;un utilisateur&lt;/h1&gt;<br />
&lt;form name=&nbsp;&raquo;utilisateur&nbsp;&raquo; method=&nbsp;&raquo;POST&nbsp;&raquo;<br />
action=&nbsp;&raquo;&lt;?php echo JRoute::_(&#8216;index.php?option=com_crud&amp;task=save&#8217;) ?&gt;&nbsp;&raquo;&gt;<br />
&lt;input type=&nbsp;&raquo;hidden&nbsp;&raquo; name=&nbsp;&raquo;user_id&nbsp;&raquo; value=&nbsp;&raquo;&lt;?php echo $this-&gt;data-&gt;user_id ?&gt;&nbsp;&raquo; /&gt;<br />
&lt;table&gt;<br />
&lt;tbody&gt;<br />
&lt;tr&gt;<br />
&lt;th&gt;PrÃ©nom de l&#8217;utilisateur&lt;/th&gt;<br />
&lt;td&gt;&lt;input type=&nbsp;&raquo;text&nbsp;&raquo; name=&nbsp;&raquo;user_name&nbsp;&raquo;<br />
value=&nbsp;&raquo;&lt;?php if (isset($this-&gt;data)) { echo $this-&gt;data-&gt;user_name; } ?&gt;&nbsp;&raquo; /&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;th&gt;Nom de l&#8217;utilisateur&lt;/th&gt;<br />
&lt;td&gt;&lt;input type=&nbsp;&raquo;text&nbsp;&raquo; name=&nbsp;&raquo;user_lastname&nbsp;&raquo;<br />
value=&nbsp;&raquo;&lt;?php if(isset($this-&gt;data)) { echo $this-&gt;data-&gt;user_lastname; } ?&gt;&nbsp;&raquo; /&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;th&gt;Email de l&#8217;utilisateur&lt;/th&gt;<br />
&lt;td&gt;&lt;input type=&nbsp;&raquo;text&nbsp;&raquo; name=&nbsp;&raquo;user_email&nbsp;&raquo;<br />
value=&nbsp;&raquo;&lt;?php if(isset($this-&gt;data)) { echo $this-&gt;data-&gt;user_email; } ?&gt;&nbsp;&raquo;&gt;&lt;/input&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;/tbody&gt;<br />
&lt;/table&gt;</p>
<p>&lt;br /&gt;<br />
&lt;br /&gt;<br />
&lt;input type=&nbsp;&raquo;submit&nbsp;&raquo; value=&nbsp;&raquo;Enregistrer&nbsp;&raquo; /&gt;&lt;/form&gt;</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.alexandre-julien.com/php/joomla/joomla-api-framework-mvc-1-5-creation-dune-application-tuto-crud/feed/</wfw:commentRss>
		<slash:comments>69</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 1/6 queries in 0.054 seconds using disk: basic
Object Caching 712/713 objects using disk: basic

Served from: www.alexandre-julien.com @ 2012-02-18 14:09:40 -->
