Php Magento管理网格列格式-渲染器?

Php Magento管理网格列格式-渲染器?,php,magento,Php,Magento,我希望sales_order_create网格在同一列中同时显示价格和特价,为此我添加了: ->addAttributeToSelect('special_price') 添加到_prepareCollection()函数,然后添加: $this->addColumn('special_price', array( 'header' => Mage::helper('sales')->__('Special Price'),

我希望sales_order_create网格在同一列中同时显示价格和特价,为此我添加了:

    ->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()函数

这管用!结果是一个新列,例如,该列显示:

79.9800--34.9900

如何将其格式化为货币格式?xx.xx英镑

还有,有没有可能设计它的风格?看起来是这样的:79.98英镑(34.99英镑)

如果不可能设计样式,只使用货币格式就好了

我认为这与渲染器有关,但我是Magento的新手,所以如果可以的话,我需要用一种基本的方式来解释它


谢谢

我已经设法让它工作起来了,我的代码很糟糕,但它可能会帮助将来偶然发现它的任何人

我看了价格栏,发现:

'renderer'  => 'adminhtml/sales_order_create_search_grid_renderer_price',
导航到app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer后,我注意到一个concat渲染器

我从这个目录复制了Concat.php并创建了一个本地版本,我将其命名为Special.php以避免任何冲突:

/app/code/local/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Special.php

然后,我将此渲染器添加到我的特殊价格栏:

'renderer'  => 'adminhtml/sales_order_create_search_grid_renderer_special',
我的Special.php代码如下所示(警告:此代码非常糟糕,但它可以正常工作,所以我很高兴):

class Mage\u Adminhtml\u Block\u Widget\u Grid\u Column\u Renderer\u Special
扩展Mage\u Adminhtml\u Block\u Widget\u Grid\u Column\u Renderer\u Abstract
{
/**
*渲染网格列
*
*@param Varien_对象$row
*@返回字符串
*/
公共函数渲染(Varien_对象$row)
{
$dataArr=array();
foreach($this->getColumn()->getIndex()作为$index){
如果($data=$row->getData($index)){
//$dataArr[]=$data;
$dataArr[]=数字_格式((浮点)$data,2,'.','';
}
}
$data=join($this->getColumn()->getSeparator(),$dataArr);
//TODO运行列类型渲染器
$price='';
$special='';
if(strlen($dataArr[0])>0){
如果(strlen($dataArr[1])>0){
$price='£;'.$dataArr[0].';
$special='£;'.$dataArr[1];
}
否则{
$price='£;'.$dataArr[0];
$special='';
}
}
返回$price.$special;
}
}
结果是,如果没有价格(分组产品),则条目为空,如果没有特殊条目,则条目为RRP,如果有特殊条目,则条目为RRP特殊价格


我确信代码是可以改进的,但它是有效的

通常您通过设置
“type”=>“price”
来获得价格格式,不知道您是否可以设置两种类型,或者是否可以放弃concat类型。否则,我认为编写自己的渲染器会有用。。。不过,我现在手头没有教程。
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;
}
}