我试图在客户网格中显示客户首字母而不是全名。即。而不是"约翰*米德*史密斯先生",我想"J*M*史密斯先生"

任何人都可以指出我正确的方向来改变这一点吗:

    $this->addColumn('firstname', array(
        'header'    => Mage::helper('customer')->__('First Name'),
        'index'     => 'firstname',
    ));

只是得到第一个字符 firstname

谢谢:-)

有帮助吗?

解决方案

您可以为此使用自己的渲染器。请参阅示例:

$this->addColumn('firstname', array(
        'header'    => Mage::helper('customer')->__('First Name'),
        'renderer'  => 'amexample/adminhtml_customer_grid_renderer_name',
         ....
    )); 

渲染器类:

class Amasty_Example_Block_Adminhtml_Customer_Grid_Renderer_Name extends  Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
    public function render(Varien_Object $row)
    {
        return substr($row->getFirstname(), 0, 1);
    }
}

您可以在此处找到默认渲染器:
app\code\core\Mage\Adminhtml\Block\Widget\Grid\Column enderer

其他提示

步骤一: 您必须复盖本地文件夹中的文件或只是复制 app\code\core\Mage\Adminhtml\Block\Customer\Grid.phpapp\code\local\Mage\Adminhtml\Block\Customer\Grid.php

第二步: 将下面的代码替换为

    $this->addColumn('name', array(
        'header'    => Mage::helper('customer')->__('Name'),
        'index'     => 'name'
    ));

替换为

     $this->addColumn('namewithprifx', array(
       'header'    => Mage::helper('customer')->__('First Name'),
        'index'     => 'firstname',
        'type'  => 'text',      
        'width' => '250px',
        'sortable'  =>false,
        'filter' => false,                                         
        'renderer' => 'NameSpace_Customergrid_Block_Adminhtml_Renderer_Namewithprifx',          
        ));

第三步:NameSpace\Customergrid\Block\Adminhtml\Renderer\Namewithprifx.php

第四步: 复制下面的代码。

 <?php
 class NameSpace_Customergrid_Block_Adminhtml_Renderer_Namewithprifx extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
 {
   public function render(Varien_Object $row)
   {

    //$getData = $row->getData();               
    $str=$row->getData('prefix'). " ". $row->getData('fname'). " ". $row->getData('lname');
    return $str;
  }
}

第五步: 刷新缓存并检查数据。

许可以下: CC-BY-SA归因
scroll top