我有一个由http://component-creator.com创建的具有4个表的自定义joomla MVC组件:

#__mycomponent_items    27 Fields
#__mycomponent_bids         12 Fields
#__mycomponent_journeys     9 Fields
#__mycomponent_users    8 Fields


我试图设置这些表之间的关系,但是由于缺乏文档和经验,我正在努力。

这些表之间的基本关系需要使用户能够使BIDS交付ITEMS。

因此,我为以下项目创建了字段:

#__mycomponent_items
id
created
updated
ordering
state
checked_out
checked_out_time
created_by
deliverydestination
itemtitle
status
requiredby
listprice
deliveredprice
commission
points_reward
accepted_bid
accepted_bidder
accepted_journey


对于这样的出价:

#__mycomponent_bids
id
state
created_by
item_id
buyer
bid
created
updated
bid_status
bid_expires
journey
arrival_date


我正在使用templates / mytemplate / html / com_mycomponent / item / default.php并尝试在该视图中添加该项目的当前出价列表。为此,我假设我需要向/components/com_mycomponent/models/item.php添加自定义函数,而我创建的函数如下:

function itemBids() {
        // Get a db connection.
        $db = JFactory::getDbo();

        // Create a new query object.
        $query = $db->getQuery(true);

        // Select item record matching the $orderID
        $query
            //->select('*')
            ->select($db->quoteName(array('id', 'created_by', 'created', 'bid', 'bid_status', 'arrival_date')))
            ->from($db->quoteName('#__mycomponent_bids'))
            ->where('item_id = item.id');
        // Reset the query using our newly populated query object.

        // Load the results as a list of stdClass objects (see later for more options on retrieving data).
        $db->setQuery($query);
        $itemBids = $db->loadObjectList();
        //print_r($itemBids);
}


然后,如何在视图/mytemplate/html/com_mycomponent/item/default.php中访问数据?

我已经试过了,它什么也不返回:

<ul>
          <?php foreach ($itemBids as $itemBid) :?>
         <?php $arrivalDate = $itemBid->arrival_date; ?>
          <li><strong><?php echo $itemBid->created_by; ?></strong> <small>can deliver for</small> $<?php echo $itemBid->bid;?> <small>
          <?php /*?><abbr class="timeago" title="<?php echo $itemBid->created; ?>"></abbr><?php */?>
          in <strong><abbr class="timeago" title="<?php echo $arrivalDate; ?>"></abbr></strong></small><div class="uk-badge uk-float-right"><?php echo $itemBid->bid_status; ?></div></li>
          <?php endforeach; ?>
        </ul>

最佳答案

您不会像那样将其放入模板中。模板仅包含生成html的布局。另外,您还需要在views / myview / tmpl文件夹中具有默认布局。

您似乎没有从itemBids()函数返回任何内容。您可能要添加return $itemBids;或可能添加return $this->itemBids;,这取决于您在其他地方正在做的事情。

您想在view.html.php类中获得$ this-> itemBids,以便随后可用于您的布局。然后,可以在布局的循环中引用$itemBids而不是引用$this->itemBids

您是否已完成“创建MVC组成部分”教程?它可能会帮助您了解MVC在Joomla中的工作方式。

关于php - 如何在MVC Joomla组件中添加功能以访问其他表中的数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22123947/

10-10 06:47