Magento:getVisibleStatusHistory()输出未正确排序

时间:2013-01-30 10:00:41

标签: magento sorting comments

我在下面(简化)有一个代码,可以在客户的帐户中为当前订单添加评论 - >订单 - >查看(订单明细)。

代码运行正常。唯一的事情是,在处理表单发送的注释并调用getVisibleStatusHistory()之后,除了客户最近添加的注释之外,所有注释都按日期/时间(降序)正确排序。该注释被添加为结果中的最后一个 - 这与getVisibleStatusHistory()结果的降序排序不对应。重新加载页面后,它已正确排序。

所有代码都在自定义view.phtml

我有一个表单发送评论:

<form action="" method="post">
  <textarea name="ordercomment" maxlength="1000"></textarea>
  <input type="submit" value="Send" />
</form>

它也由view.phtml处理:

$ordcomment = $_POST['ordercomment'];
$_order->addStatusHistoryComment($ordcomment)->setIsVisibleOnFront(1);
$_order->save();

并在该脚本之后打印所有可见的注释:

<?php $_history = $this->getOrder()->getVisibleStatusHistory() ?>
<?php if (count($_history)): ?>
<div class="order-additional order-comments">
    <h2 class="sub-title"><?php echo $this->__('About Your Order') ?></h2>
    <dl class="order-about">        
        <?php foreach ($_history as $_historyItem): ?>
            <dt><?php echo $this->formatDate($_historyItem->getCreatedAtStoreDate(), 'medium', true) ?></dt>
           <dd><?php echo $this->escapeHtml($_historyItem->getComment()) ?></dd>
        <?php endforeach; ?>
    </dl>
</div>
<?php endif; ?>

有谁知道是什么原因,为什么最后添加的评论在其他评论中没有正确排序?

1 个答案:

答案 0 :(得分:1)

这种奇怪排序的原因是,当您将新的历史记录项添加到订单的状态历史记录集合时,该订单会加载现有的集合(已排序)并将新项目添加到其结尾。

要正确输出集合,您可以重新加载订单对象,然后以正确的顺序获取历史记录集合:

<?php 
$orderNew = Mage::getModel('sales/order')->load($this->getOrder()->getId());
$_history = $orderNew->getVisibleStatusHistory() ?>