如何从Joomla 1.6 / 2.5中的禁用插件获取JFormField中的参数?

时间:2013-06-11 11:08:40

标签: joomla parameters params

如何从joomla 1.6 / 2.5中的已禁用/尚未激活的插件中获取一些参数?

$module = JPluginHelper::getPlugin('system','myplugin');
$moduleParams = new JParameter($module->params);
$val = $moduleParams->get("key");

这个方法不起作用,因为我需要在一个元素JFormField生成器中使用。

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

使用JPluginHelper::getPlugin,只能访问已启用的插件,因此这里是直接访问数据库的代码。

// Build query
$db    = JFactory::getDbo();
$query = $db->getQuery(true);

$query
    ->select( 'params' )
    ->from(   '#__extensions' )
    ->where(  'type = ' . $db->q('plugin') )
    ->where(  'folder = ' . $db->q('authentication') )  // Plugin type
    ->where(  'element = ' . $db->q('gmail') )          // Plugin element
;

// Execute query
$db->setQuery($query);

try
{
    $result = $db->loadResult();
}
catch (RuntimeException $e)
{
    return false;
}

// Parse parameters
if (!empty($result))
{
    $params = new JRegistry($result);
    $val    = $params->get('key', 'defaultValue');
}

您可以将查询结果存储在JFormField对象中,以便在案例字段多次可用时保存数据库查询。

protected $results = null;

答案 1 :(得分:0)

也许您可能想尝试一下:

// Get plugin parameters
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('`params`')
      ->from  ('`#__extensions`')
      ->where ("`type`    = 'plugin'")
      ->where ("`folder`  = 'system'")
      ->where ("`element` = 'myplugin'");
$db->setQuery($query);
$res = json_decode($db->loadResult(), true);
$val = $res['key'];

答案 2 :(得分:0)

我自己找到答案。

$data = null;
foreach ((array) $this->form as $k => $v) {
  if($val instanceof JRegistry){
    $data = &$v;
    break;
  }
}
$data = $data->toArray();
$val = $data['params']['key'];

谢谢!再见!