2017-01-11 4 views
0

Ich habe eine benutzerdefinierte Komponente in Joomla 3.6 erstellt. Die Komponente selbst funktioniert einwandfrei, aber ich habe Probleme beim Zugriff auf Benutzerstatusvariablen von benutzerdefinierten Feldern innerhalb der Komponente und von einem separaten Modul. Wenn ich es versuche, bekomme ich nichts zurück.Wie kann ich auf die Benutzerstatusvariablen einer Komponente von einem Modul in Joomla 3.x zugreifen?

Hier ist mein Code von populatestate() im Modell:

$app = JFactory::getApplication(); 
$filter_product_group_category = $app->getUserStateFromRequest('filter.product_group_category', 'filter[product_group_category]', '', 'string'); 
$this->setState('filter.product_group_category', $filter_product_group_category); 

$filter_product_group_type = $app->getUserStateFromRequest('filter.product_group_type', 'filter[product_group_type]', '', 'string'); 
$this->setState('filter.product_group_type', $filter_product_group_type); 

$filter_search = $app->getUserStateFromRequest('filter.search', 'filter[search]', '', 'string'); 
$this->setState('filter.search', $filter_search); 

Hier ist der Code, den ich aus dem benutzerdefinierten Feld verwenden und das Modul:

$mainframe =JFactory::getApplication(); 
$filter_product_group_category = $mainframe->getUserState("filter.product_group_category"); 
$filter_product_group_type = $mainframe->getUserState("filter.product_group_type"); 
$filter_search = $mainframe->getUserState("filter.search"); 

echo $filter_product_group_category; 
echo $filter_product_group_type; 
echo $filter_search; 

I Mache offensichtlich etwas falsches, aber ich habe mein Wissen erschöpft und habe stundenlang Google-Recherchen durchgeführt, ohne näher zu kommen. Jede Hilfe wird geschätzt!

Antwort

0

In der Moduldatei i etwas wie diese:

JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_aoeodb/models', 'AoeoDBModel'); 

$view     = ModAoeoDBHelper::getFilterView(); 

$model     = JModelLegacy::getInstance(ucfirst($view), 'AoeoDBModel', array('ignore_request' => true)); 

Dann im Helfer:

$form  = $model->getForm();   
$filters = $form->getFieldset(); 

    foreach ($filters as $field) 
    { 

     if($field->getAttribute('name') <> 'search') 
     { 

      $form->setValue($field->getAttribute('name'), 'filter', $model->getState('com_aoeodb.'. $view . '.filter.' . $field->getAttribute('name'))); 

     }    

    } 

    return $filters; 

Es wird die modalen Werte basierend auf dem Formular im Modul Ich verwende und legt den Feldwert fest.

0

Der Komponentenstatus wird in Post und nicht in Sitzung gespeichert, also wenn Sie Werte erhalten möchten, sollten Sie sie vom Modell erhalten. Wie in Gedankenbeispiel.

Wenn Sie in Sitzungswerte speichern, so dass in Ihrem Modell sollten Sie Werte in Benutzerstatus hinzufügen:

$app = JFactory::getApplication(); 
$filter_product_group_category = $app->getUserStateFromRequest('filter.product_group_category', 'filter[product_group_category]', '', 'string'); 
$app->setUserState('filter.product_group_category', $filter_product_group_category); 

Hope this Hilfe.

Verwandte Themen