2013-10-25 83 views
3

我买了“Learning Joomla!3 Extension Development,Third Edition”。这本书是超级!作为Joomla的新手!开发,这对我的第一份工作帮助我构建一个新组件。但是,我还是不理解模型的构造函数:Joomla 3上的filter_fields模型

public function __construct($config = array()) 
{ 
    if (empty($config['filter_fields'])) 
    { 
     $config['filter_fields'] = array(
      'id', 'a.id', 
      'title', 'a.title', 
      'state', 'a.state', 
      'company', 'a.company', 
      'image', 'a.image', 
      'url', 'a.url', 
      'phone', 'a.phone', 
      'description', 'a.description', 
      'ordering', 'a.ordering', 'a.catid' 
     ); 
    } 

parent::__construct($config); 
} 

什么是“ID”和“a.id”,“标题”和“a.title”,“电话”和“之间的关系a.phone'等?请问joomla!自动分配数据库表中的值还是什么?当我改变'电话'成为'电话'时,我无法检索数据。 以前感谢。

回答

0

数据库表使用文本“手机”作为实际的字段名称找到关于你的问题的一些附加信息。在示例中使用b.phone在进行各种查询时将该表示作为“电话”继续。

如果您想使用名称“电话”,您必须将数据库表中的实际名称更改为“电话”。您的新过滤器字段将是电话,b.telephone。

我同意这本书是超级的。

1

我也被这个困惑了。我发现了一个answer here (quoted below)。显然,这只是一个允许的字段名称的白名单,没有其他。

此设置的值仅仅是允许在查询中使用的字段名称的白名单。所以,你可以看到我们有很多标准的字段名称。我们还添加了一些特定于查询的名称变体,以防使用此模型的其他人想使用它们。这是真的。当您单击其中一个列表标题时,它会为请求中的列表设置排序列。我们知道模型中的populateState方法会从请求中提取这个值,并且当它发生时,它会根据这个白名单检查它。如果请求的排序列不在白名单中,它会安全地恢复为默认排序。