2017-01-11 8 views
0

Я создал пользовательский компонент в Joomla 3.6. Сам компонент работает нормально, но у меня возникают проблемы с доступом к переменным пользовательского состояния из настраиваемых полей внутри компонента и из отдельного модуля. Когда я пытаюсь, я ничего не получаю.Как получить доступ к переменным состояния пользователя компонента из модуля в Joomla 3.x?

Вот мой код из populatestate() в модели:

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

Вот код, я использую внутри настраиваемого поля и модуль:

$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 Очевидно, что я сделал что-то не так, но я исчерпал свои знания и потратил много времени на исследования Google, но не стал ближе. Любая помощь ценится!

ответ

0

В файле модуля у меня есть что-то вроде этого:

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

$view     = ModAoeoDBHelper::getFilterView(); 

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

Тогда в помощнике:

$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; 

Он получает модальные значения, основанные на форме я использую в модуле и задает значение поля.

0

Состояние компонента хранится в столбце, а не в сеансе, поэтому, если вы хотите получить значения, чтобы получить их из модели. Как в примере с драгоценным камнем.

Если вы хотите сохранить значения в сессии, поэтому в вашей модели, вы должны добавить значения в состояние пользователя:

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

Надежда эта помощь.

 Смежные вопросы

  • Нет связанных вопросов^_^