Joomla 组件 - 站点模型问题



我一直在为我的几个客户开发一个房地产组件。我几乎可以正常工作,除了从单独的表中获取图像。

站点模型的一个示例是"城市"。在城市模型中,主要获取(查询)是基于城市的属性列表。例如,如果从城市视图或菜单项中选择了达拉斯等城市,则在单个城市视图中仅显示属性城市 = 达拉斯的住宿列表。

这部分工作得很好,因为它应该这样做。问题是每个列表都有多个图像,存储在图像表中。在属性列表视图上,只需要拉取显示单个图像(可能有多个图像)。

在主属性查询中添加为"链接"子查询不起作用,因为它将为每个图像创建多个重复的属性列表。因此,我创建了自定义方法,以获取图像。

我用来帮助构建的编译器不支持签名方法(取值的方法),因此我需要添加为类值。在属性的 getItems 函数中,我创建了以下类值:

$this->a_property_id = $item->id;

然后,在我添加的 getImage 自定义函数中

$query->where('a.propid = ' . $db->quote($this->a_property_id));

作为查询的一部分。理论上,这应该拉取一个 a.propid 等于属性 id 的项目,例如属性 id=3,然后从 propid=3 的图像中提取一个项目。

最后,我在网站视图默认中添加了图像代码.php作为 foreach 的一部分:

<?php foreach ($this->items as $item): ?>
<li>
<div class="uk-grid uk-panel uk-panel-box">
<div class="uk-width-medium-1-3">
<?php if(empty($this->image->path)){ ?>
<div> <a href="<?php echo 'index.php?option=com_mostwantedrealestate&view=property&id='.$item->id;?>" title="<?php echo $item->name;?>" rel=""> <img class="uk-thumbnail uk-thumbnail-medium" src="<?php echo JURI::root().'media/com_mostwantedrealestate/images/No_image_available.png'; ?>"> </a> </div>
<?php } else { ?>
<div> <a href="<?php echo 'index.php?option=com_mostwantedrealestate&view=property&id='.$item->id;?>" title="<?php echo $item->name;?>" rel=""> <img class="uk-thumbnail uk-thumbnail-medium"  src="<?php echo JURI::root() . $this->image->path . $this->image->filename; ?>"></a></div>
<?php } ?>
</div>
<div class="uk-width-medium-1-3 uk-float-left">
<a href="<?php echo 'index.php?option=com_mostwantedrealestate&view=property&id='.$item->id;?>" title="<?php echo $item->name;?>" rel="" >
<h3><?php echo $item->name; ?></h3>
</a>
</div>

这有点有效,但并不完全有效,所以我不确定我可能错过了什么。按照我编码的方式,它显示一个图像。如果只有一个属性列表,那么它会显示正确的图像,但是,如果有两个属性:id=1 和 id=3,那么它显示两个列表的图像表中的 propid=3,而不是显示 propid=1 表示 id=1,propid=3 表示 id=3。

关于我可能错过什么的任何想法?

您正在循环$this->items但您对所有这些对象使用相同的$this->image对象。所以你一遍又一遍地看到相同的图像。

您可以通过将图像信息添加到项目来解决此问题。由于您只想显示一个图像,因此可以通过连接项目表和图像表的单个查询轻松完成此操作。

另一种方法是在模型中组合来自不同查询的必要数据,以便可以使用类似$item->image->path.

最新更新