Php Magento:在后端数据网格中的on列中显示不同的操作链接
我目前正在Magento后端处理自定义产品列表 以下是我当前用于添加行的代码:Php Magento:在后端数据网格中的on列中显示不同的操作链接,php,magento,custom-action,backend,Php,Magento,Custom Action,Backend,我目前正在Magento后端处理自定义产品列表 以下是我当前用于添加行的代码: $this->addColumn('action_widget', array( 'header' => Mage::helper('catalog')->__('Action'), 'width' => '110px', 'type' => 'action', 'getter' =&g
$this->addColumn('action_widget',
array(
'header' => Mage::helper('catalog')->__('Action'),
'width' => '110px',
'type' => 'action',
'getter' => 'getId',
'actions' => array(
array(
'caption' => Mage::helper('catalog')->__('Create Widget'),
'url' => array(
'base'=>'*/*/create_widget',
'params'=>array('store'=>$this->getRequest()->getParam('store'))
),
'field' => 'id'
)
),
'filter' => false,
'sortable' => false,
'index' => 'stores',
));
这已经成为首选
但是现在我想在已经创建小部件(更新小部件)时显示另一个操作链接,而不是创建链接。为了知道小部件已经创建,我加入了一个集合属性,当它不存在时为null,当它确实存在时为字符串
我已经尝试使用自定义网格模板文件,将{actionAssign}“变量”放入url并在模板中分配,但magento url验证拒绝了这一点
有没有什么方法可以在没有大量解决办法的情况下做到这一点
如果没有,是否可以根据产品集合中的属性创建禁用链接
谢谢大家!MRu您需要为此创建自定义网格列渲染器:
class Mycompany_Mymodule_Block_Adminhtml_Template_Grid_Renderer_Myrendered extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Action
{
...
}
// ...
'filter' => false,
'renderer' => 'mycompany_mymodule/adminhtml_template_grid_renderer_myrenderer',
'sortable' => false,
'index' => 'stores',
// ...
对于那些尝试过Zyava的答案但没有成功的人,你可能需要这样做:
'filter' => false,
'renderer' => Mage::getConfig()->getBlockClassName('mycompany_mymodule/adminhtml_template_grid_renderer_myrenderer'),
'sortable' => false,
'index' => 'stores',
我不知道错误在哪里,因为这不必要,但是。。。这是给我的。下面的代码适合我。
$this->addColumn('action',
排列(
'header'=>Mage::helper('orderemplerance')->('Action'),
“宽度”=>“100”,
“类型”=>“操作”,
'getter'=>'getOrderId',
“操作”=>数组(
排列(
'caption'=>Mage::helper('orderemplerance')->('View Order'),
'url'=>array('base'=>adminhtml/sales\u order/view'),
'字段'=>'订单id'
)
),
“过滤器”=>false,
“渲染器”=>“Mycompany\u Mymodule\u Block\u Adminhtml\u Template\u Grid\u renderer\u Myrendered”,
'sortable'=>false,
'索引'=>'存储',
“是否为系统”=>正确,
));
类Mycompany\u Mymodule\u Block\u Adminhtml\u Template\u Grid\u Rendered\u Myrendered扩展了Mage\u Adminhtml\u Block\u Widget\u Grid\u Column\u Renderer\u Action
{
公共函数渲染(Varien_对象$row)
{
$value=$row->getData('increment_id');
如果($value=$row->getData('increment\u id'))
返回“getUrl('adminhtml/sales\u order/view',array('order\u id'=>$row->getData('order\u id'))”)。“>view order';
其他的
返回false;
}
}
有一种更简单的方法:
protected function _prepareColumns()
{
$this->addColumn('action1',
array(
'type' => 'action',
'getter' => 'getId',
'frame_callback' => array($this, 'decorateRow'),
'actions' => array( ... )
'index' => 'stores',
'is_system' => true,
));
return parent::_prepareColumns();
}
public function decorateRow($sVal, Mage_Core_Model_Abstract $oRow){
return $oRow->getData('something') ? '' : $sVal;
}
比使用渲染器更容易!