3

カスタム モジュール グリッドに次のコードがあります。

     $this->addColumn('action',
     array(
            'header'    =>  Mage::helper('module')->__('Action'),
            'width'     => '100',
            'type'      => 'action',
            'getter'    => 'getId',     
            'actions'   => array(
                array(
                    'caption'   => Mage::helper('module')->__('Edit'),
                    'url'       => array('base'=> '*/*/edit'),
                    'field'     => 'id',                
                )
            ),
            'filter'    => false,
            'sortable'  => false,
            'index'     => 'stores',
            'is_system' => true,
    )); 

グリッドに新しいゲッターを作成する方法があることを知りたいです。これを行う私の目的は、余分なパラメーターを URL に渡すことです。

これを使用して、次の編集URLを取得しています

http://domain.com/index.php/module/adminhtml_module/edit/id/5/key/a19618bbaa3ee98ed395bc2fa552de35/

'getter' => 'getStoreId' のように別のゲッターを URL に追加する場合、

私のURLよりも次のようにする必要があります:

http://domain.com/index.php/module/adminhtml_module/edit/id/5/store/5/key/a19618bbaa3ee98ed395bc2fa552de35/

どうすればそれを行うことができますか?

次のコードを使用しようとしましたが、うまくいきませんでした。

    $this->addColumn('action',
     array(
            'header'    =>  Mage::helper('module')->__('Action'),
            'width'     => '100',
            'type'      => 'action',
            'getter'    => array('getId','getStoreId'),     
            'actions'   => array(
                array(
                    'caption'   => Mage::helper('module')->__('Edit'),
                    'url'       => array('base'=> '*/*/edit'),
                    'field'     => array('id',store_id),                
                )
            ),
            'filter'    => false,
            'sortable'  => false,
            'index'     => 'stores',
            'is_system' => true,
    ));
4

2 に答える 2

2

URL にストア キーを追加するにはactions

'actions'   => array(
    array(
        'caption' => Mage::helper('catalog')->__('Edit'),
        'url'     => array(
            'base'=>'*/*/edit',
            'params'=>array('store'=>$this->getRequest()->getParam('store'))
        ),
        'field'   => 'id'
    )
),

$this->getRequest()->getParam('store')必要に応じて更新

参照 /app/code/core/Mage/Adminhtml/Block/Catalog/Product/Grid.php

$this->addColumn('action',
    array(
        'header'    => Mage::helper('catalog')->__('Action'),
        'width'     => '50px',
        'type'      => 'action',
        'getter'     => 'getId',
        'actions'   => array(
            array(
                'caption' => Mage::helper('catalog')->__('Edit'),
                'url'     => array(
                    'base'=>'*/*/edit',
                    'params'=>array('store'=>$this->getRequest()->getParam('store'))
                ),
                'field'   => 'id'
            )
        ),
        'filter'    => false,
        'sortable'  => false,
        'index'     => 'stores',
));
于 2013-03-22T14:06:06.537 に答える
1

グリッドから複数の値を渡したい場合は、カスタム レンダラーを使用できます。

    $this->addColumn('action',
     array(
        'header'    =>  Mage::helper('module')->__('Action'),
        'width'     => '100',
        'type'      => 'text',
        'filter'    => false,
        'sortable'  => false,
        'is_system' => true,
        'renderer'  => 'Company_MyModule_Block_Adminhtml_Renderer_Actionlink',
    ));

レンダラー:

class Company_MyModule_Block_Adminhtml_Renderer_Actionlink extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract {
  public function render(Varien_Object $row) {
    $url=$this->getUrl('*/*/edit', array('id'=>$row->getId(), 'storeId' => $row->getStoreId()));
    return sprintf("<a href='%s'>%s</a>", $url, Mage::helper('catalog')->__('Edit'));
  }
}
于 2013-12-03T11:47:20.117 に答える