2013-10-15 25 views
1

我設計了一個基於我自己的模型的自定義adminhtml網格,我已經添加了一個動作列到網格,我希望能夠點擊複製一些文本到剪貼板。Magento adminhtml網格與javascript動作列

所以在_prepareColumns()在Grid.php功能,我已經添加了動作欄,如下圖所示:

$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

@Franklin P Strube:TY,我指出了正確的方向。

我用最後的解決方案是如下

.... 
      'actions' => array(
        array(
        'caption' => Mage::helper('sales')->__('Copy'), 
        'onclick' => "javaScriptCopyMethod();" 
       ) 
      ), 
.... 

它被認爲是不好的做法,訪問用戶的剪貼板中,大多數瀏覽器防止這種時下,然而,我卻發現下面解釋Trello「如何出現鏈接極具創意的帖子「要訪問用戶的剪貼板,該解決方案實際上是由Trello開發人員之一的Daniel LeCheminant發佈的。

解決方案:How does Trello access the user's clipboard?
附加:https://trello.com/daniel

3

你可以在這裏做一些有趣的事情。主要是,你會想參考Action rendererGrid Javascript。您現在的代碼應該在操作列中呈現單個鏈接。但是,如果您提供一系列操作,則這將成爲<select>列表。當呈現<select>時,那麼grid.js文件負責執行該操作。

下面是你會通過 '動作' 陣在哪一些例子:

的Javascript的onclick瓦特/鏈接

... 
    '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> lis行動噸(打開一個彈出最後一個動作)

... 
    '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'), 
     ) 
    ), 
... 
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', 
      )); 
相關問題