it-swarm.com.de

Komponente im Modul. addModelPath scheint nicht zu funktionieren

Ich versuche, eine Komponente in einem Modul anzuzeigen, das mit diesem Beispiel zu funktionieren scheint http://www.escope.cz/en/blog/94-how-to-load-component-in-a-module)

Ich stehe jetzt vor einem Problem, bei dem mein Modell nicht geladen wird und ich bin sicher, dass es mit dieser Linie zu tun hat

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

Ich habe eine var_dump($controller) ausgeführt und finde keinen Verweis auf user.php. Ich bin nicht sicher, wonach ich in der Ausgabe suchen soll, aber ich weiß, dass user.php bei keiner Suche auftaucht.

Die Komponente funktioniert einwandfrei, nicht im Modul, daher ist es nicht die Komponente

[~ # ~] Update [~ # ~]

Ich habe diese Zeile hinzugefügt, die jetzt das Modell enthält, und ich kann das Modell jetzt verwenden, um $this->msg = $this->get('Msg'); aufzurufen.

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

Aber jetzt wird diese Warnung angezeigt

JForm :: getInstance konnte die Datei nicht laden

Wenn ich versuche, eine var_dump() in der view.html.php auf dem Modell auszuführen, wird null zurückgegeben

Hier ist der gesamte Modulcode

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

Laden eines Modells:

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

Laden einer Komponentenansicht:

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
1
Dennis Heiden