2

I am trying to display a component in a module which seems to work using this example http://www.escope.cz/en/blog/94-how-to-load-component-in-a-module

I am now facing a problem where my model isn't getting loaded and I'm sure it's to do with this line

$controller->addModelPath(JPATH_SITE . DS . 'components' . DS . 'com_helloworld' . DS . 'models' . DS . 'user.php'); 

I have done a var_dump($controller) and don't find any reference to user.php. I'm not sure what to look for in the output but i know user.php doesn't come up in any search.

The component works fine not in the module so it's not the component

UPDATE

I added this line which now includes the model and I can now use the model to call $this->msg = $this->get('Msg');

require_once (JPATH_SITE . DS . 'components' . DS . 'com_helloworld' . DS . 'models' . DS . 'user.php'); 

But now I get this alert pop up

JForm::getInstance could not load file

If I try to do a var_dump() in the view.html.php on the model it returns null

Here is the entire module code

<?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); } 

1 Answer 1

1

Loading a model:

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(); 

Loading a component view:

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 

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.