我正在设计一个基于我自己的模型的自定义adminhtml网格,我已经在网格中添加了一个动作列,我希望能够点击将一些文本复制到剪贴板。
所以在Grid.php的_prepareColumns()函数中,我添加了actions列,如下所示:
$this->addColumn('action',array(
'header' => Mage::helper('sales')->__('To Clipboard'),
'width' => '5%',
'type' => 'action',
'getter' => 'getId',
'actions' => array(
array(
'caption' => Mage::helper('sales')->__('Copy'),
'url' => array('base'=>'*/*/toclipboard'),
'field' => 'id'
)
),
'filter' => false,
'sortable' => false,
'is_system' => true,
)
);
我可能需要使用Javascript来执行此操作,但我不太确定如何操作。即使我已成功将$this->setUseAjax(true);
添加到__construct();
,上面使用上述方法也会导致页面重新加载。
会感激一些意见。
答案 0 :(得分:3)
你可以在这里做一些有趣的事情。主要是,您需要引用Action renderer和Grid Javascript。您现在拥有的代码应该在actions列中呈现单个链接。但是,如果您提供一系列操作,则会成为<select>
列表。呈现<select>
时,grid.js文件负责执行操作。
以下是您将在&#39;操作中传递的内容的一些示例。阵列:
Javascript Onclick w / link
...
'actions' => array(
array(
'caption' => Mage::helper('sales')->__('Copy'),
'onclick' => 'window.location = "' . Mage::getUrl('*/*/toclipboard') . '"'
)
),
...
在执行操作前确认
...
'actions' => array(
array(
'caption' => Mage::helper('sales')->__('Copy'),
'url' => array('base'=>'*/*/toclipboard'),
'confirm' => true
)
),
...
呈现<select>
个动作列表(在弹出窗口中打开最后一个动作)
...
'actions' => array(
array(
'caption' => Mage::helper('sales')->__('Copy'),
'url' => array('base'=>'*/*/toclipboard'),
'confirm' => true
),
array(
'caption' => Mage::helper('sales')->__('Example'),
'onclick' => 'window.location = "' . Mage::getUrl('*/*/toclipboard') . '"'
),
array(
'caption' => Mage::helper('sales')->__('Popup'),
'popup' => true
'url' => array('base'=>'*/*/toclipboard'),
)
),
...
答案 1 :(得分:0)
@Franklin P Strube:ty,我指出了正确的方向。
我使用的最终解决方案如下
....
'actions' => array(
array(
'caption' => Mage::helper('sales')->__('Copy'),
'onclick' => "javaScriptCopyMethod();"
)
),
....
访问用户的剪贴板被认为是不好的做法,现在大多数浏览器都会阻止这种做法,但我确实找到了一个非常有创意的帖子,下面解释了Trello如何“出现”以访问用户的剪贴板,该解决方案实际上是由Daniel发布的LeCheminant是Trello开发人员之一。
解决方案:How does Trello access the user's clipboard?
附加:https://trello.com/daniel
答案 2 :(得分:0)
简单添加选项:'target'=>'_blank'
示例:
$this->addColumn('action',
array(
'header' => Mage::helper('revocation')->__('Action'),
'width' => '100px',
'type' => 'action',
'getter' => '',
'actions' => array(array(
'caption' => Mage::helper('revocation')->__('View'),
'url' => array('base' => 'adminhtml/sales_order/view'),
'field' => 'order_id',
'target'=>'_blank'
)),
'filter' => false,
'sortable' => false,
'index' => 'order_id',
));