J'essaie d'afficher un composant dans un module qui semble fonctionner avec cet exemple http://www.escope.cz/en/blog/94-how-to-load-component-in-a-module
Je suis maintenant confronté à un problème où mon modèle n'est pas chargé et je suis sûr que cela a à voir avec cette ligne
$controller->addModelPath(JPATH_SITE . DS . 'components' . DS . 'com_helloworld' . DS . 'models' . DS . 'user.php');
J'ai fait un var_dump($controller)
et ne trouve aucune référence à user.php. Je ne suis pas sûr de ce qu'il faut rechercher dans la sortie, mais je sais que user.php ne figure dans aucune recherche.
Le composant fonctionne bien pas dans le module, donc ce n'est pas le composant
[~ # ~] met à jour [~ # ~]
J'ai ajouté cette ligne qui inclut maintenant le modèle et je peux maintenant utiliser le modèle pour appeler $this->msg = $this->get('Msg');
require_once (JPATH_SITE . DS . 'components' . DS . 'com_helloworld' . DS . 'models' . DS . 'user.php');
Mais maintenant, je reçois cette alerte
JForm :: getInstance n'a pas pu charger le fichier
Si j'essaie de faire var_dump()
dans le view.html.php du modèle, la valeur null
Voici le code complet du module
<?php
/*
* @package Joomla 2.5
* @author Jan Linhart
* @authorurl http://www.escope.cz
* @license GNU/GPL
*
* YourModule module - main script
*/
defined('_JEXEC') or die('Restricted access');
if(!defined('DS')) define('DS', DIRECTORY_SEPARATOR);
$view = JRequest::getCmd('view', null);
$layout = JRequest::getCmd('layout', null);
$task = JRequest::getCmd('task', null);
JRequest::setVar('option', 'com_helloworld');
JRequest::setVar('view', 'user');
JRequest::setVar('layout', 'default');
JRequest::setVar('task', 'display');
$lang = JFactory::getLanguage();
$lang->load('com_helloworld', JPATH_SITE);
if (!class_exists('HelloWorldController')) {
require_once (JPATH_SITE . DS . 'components' . DS . 'com_helloworld' . DS . 'controller.php');
}
// THIS HAS BEEN ADDED TO INCLUDE THE MODEL
require_once (JPATH_SITE . DS . 'components' . DS . 'com_helloworld' . DS . 'models' . DS . 'user.php');
$controller = new HelloWorldController();
$controller->addModelPath(JPATH_SITE . DS . 'components' . DS . 'com_helloworld' . DS . 'models' . DS . 'user.php');
$controller->setProperties(
array(
'basePath' => JPATH_SITE . DS . 'components' . DS . 'com_helloworld',
'paths' => array(
'view' => array(
JPATH_SITE . DS . 'components' . DS . 'com_helloworld' . DS . 'views'
),
'model' => array(
JPATH_SITE . DS . 'components' . DS . 'com_helloworld' . DS . 'models'
)
)
)
);
$controller->execute('display');
echo '<pre>';var_dump($controller);echo '</pre>';
// revert system vars to previous state
// if($option != null){
// JRequest::setVar('option', $option);
// }
if($view != null){
JRequest::setVar('view', $view);
}
if($layout != null){
JRequest::setVar('layout', $layout);
}
if($task != null){
JRequest::setVar('task', $task);
}
Chargement d'un modèle:
JLoader::import('joomla.application.component.model');
JLoader::import( 'user', JPATH_SITE . DS . 'components' . DS . 'com_helloworld' . DS . 'models' );
$user_model = JModelLegacy::getInstance('user','HelloWorldModel');
$items = $user_model->getItems();
Chargement d'une vue de composant:
if(!defined('DS')) define('DS', DIRECTORY_SEPARATOR);
$option = JRequest::getCmd('option',null);
$view = JRequest::getCmd('view',null);
$layout = JRequest::getCmd('layout',null);
$task = JRequest::getCmd('task',null);
JRequest::setVar('option', 'com_helloworld');
JRequest::setVar('view', 'events');
JRequest::setVar('layout', 'default');
JRequest::setVar('task', 'display');
$lang = JFactory::getLanguage();
$lang->load('com_helloworld', JPATH_SITE);
if (!class_exists('HelloWorldController')) {
require_once (JPATH_SITE . DS . 'components' . DS . 'com_helloworld' . DS . 'controller.php');
}
$controller = new HelloWorldController();
$controller->addModelPath(JPATH_SITE .DS. 'components' .DS. 'com_helloworld' .DS. 'models' .DS);
$controller->setProperties(array(
'basePath' => JPATH_SITE .DS. 'components' .DS. 'com_helloworld',
'paths' => array(
'view' => array(
JPATH_SITE .DS. 'components' .DS. 'com_helloworld' .DS. 'views'
),
'model' => array(
JPATH_SITE .DS. 'components' .DS. 'com_helloworld' .DS. 'models'
)
)
));
// buffer the view output to a var
ob_start();
$controller->execute('display');
$content = ob_get_contents();
ob_end_clean();
// revert system vars to previous state
JRequest::setVar('option', $option);
JRequest::setVar('view', $view);
JRequest::setVar('layout', $layout);
JRequest::setVar('task', $task);
echo $content; // echo the buffered content