2014-10-10 71 views
1

我想sales_order_create表格顯示的價格和特殊的價格都在同一列中,我已通過添加這樣做:Magento管理網格列格式 - 渲染器?

->addAttributeToSelect('special_price') 

到_prepareCollection()函數,然後補充說:

$this->addColumn('special_price', array(
     'header' => Mage::helper('sales')->__('Special Price'), 
     'sortable'  => false, 
     'index'  => array('price', 'special_price'), 
     'type'   => 'concat', 
     'separator' => ' -- ', 
     'width'  => '140px', 
    )); 

給_prepareColumns()函數。

This Works!結果是一個新列其中,作爲一個例子,顯示:

79.9800 - 34.9900

我如何格式化這個所以它以貨幣格式? £xx.xx

另外,是否可以設計它?所以它看起來像這樣:£79.98(£34.99)

如果它不可能風格,只是在貨幣格式會很好。

我認爲這與渲染器有關,但我是Magento的新手,所以需要用基本的方法解釋,如果那樣的話。

感謝

+0

通常你通過設置''type'=>'price''來獲得價格格式,如果你可以設置兩種類型或者可以以某種方式放棄concat類型, 。否則,我認爲編寫自己的渲染器會起作用......不過,現在我沒有得到任何教程。 – user3154108 2014-10-10 12:21:19

回答

1

我已經成功地得到這個工作,我的代碼是可怕的,但它可以幫助任何人誰在未來跨越這個絆倒。

我看了一下價格列,並看到:

'renderer' => 'adminhtml/sales_order_create_search_grid_renderer_price', 

導航到應用程序/代碼/核心/法師/ Adminhtml /座/空間/表格/列/渲染器後,我注意到一個CONCAT渲染器。

我從這個目錄複製Concat.php並創建一個本地的版本,我把它命名爲Special.php以避免任何衝突:

/應用/代碼/本地/法師/ Adminhtml /座/空間/表格/列/渲染/ Special.php

我加入此渲染到我的special_price柱:

'renderer' => 'adminhtml/sales_order_create_search_grid_renderer_special', 

我Special.php代碼如下(警告:此代碼是非常可怕的,但它的作品,所以我很高興):

class Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Special 
extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract 
{ 
/** 
* Renders grid column 
* 
* @param Varien_Object $row 
* @return string 
*/ 
public function render(Varien_Object $row) 
{ 
    $dataArr = array(); 

    foreach ($this->getColumn()->getIndex() as $index) { 
     if ($data = $row->getData($index)) { 
      //$dataArr[] = $data; 
          $dataArr[] = number_format((float)$data, 2, '.', ''); 
     } 
    } 
    $data = join($this->getColumn()->getSeparator(), $dataArr); 
    // TODO run column type renderer 

      $price = ''; 
      $special = ''; 

      if (strlen($dataArr[0]) > 0) { 

      if (strlen($dataArr[1]) > 0) { 
       $price = '<span style="text-decoration:line-through">&pound;' . $dataArr[0] . '</span>'; 
       $special = ' &pound;' . $dataArr[1]; 
      } 
      else { 
       $price = '&pound;' . $dataArr[0]; 
       $special = ''; 
      } 

      } 

      return $price . $special; 
} 
} 

的結果是,如果沒有價格(組合產品)的條目是空白的,如果沒有特殊的條目是建議零售價,如果有一個特殊的條目是 RRP 特價

代碼我肯定可以改善,但它的工作原理