Sales > Orders グリッドに支払い方法の列を追加するモジュールがあります。
$this->addColumn('method', array(
'header' => Mage::helper('sales')->__('Payment<br />Method'),
'index' => 'method',
'renderer' => 'Artizara_Ordergridadditions_Block_Catalog_Product_Renderer_Payment',
'filter_index' => 'sfop.method', // refers to a declaration above
type' => 'options',
'options' => array(0=>'Option 1',1=>'Option2'), // how would I get the keys to match to the renderer options???
));
レンダラー コード (以下):
public function render(Varien_Object $row) {
$value = $row->getData($this->getColumn()->getIndex());
switch ($value) {
case 'authorizenet':
$value = 'Credit Card (Authorize.net)';
$span = '';
break;
case 'paypal_express':
$value = 'Paypal Express';
$span = '';
break;
case 'checkmo':
$value = 'Check/Money Order';
$span = '';
break;
case 'free':
$value = 'No Payment Required';
$span = '';
break;
default:
$value = 'Unknow Payment Method';
$span = 'style="color:red;"';
}
return '<span ' . $span . '>' . $value . '</span>';
}
グリッドでフィルタリングするためのレンダラー オプションが事前設定されたドロップダウンを作成できるようにしたいだけです。
注:フィルタリングにテキスト フィールド メソッドを追加する場合は、データベースから元のキーを入力する必要があります (例: checkmo、paypal_express、authorizenet など)。
ドロップダウンでそれぞれのレンダラーの値を表示できるようにしたいのですが...(どのように)?
編集 7/20/12
以下の2つの方法を試しましたが、まだ機能していません...
'options' => array(
array('value' => 'authorizenet', 'label' => 'Credit Card (Authorize.net)'),
array('value' => 'paypal_express', 'label' => 'Paypal Express'),
array('value' => 'checkmo', 'label' => 'Check/Money Order'),
array('value' => 'free', 'label' => 'No Payment Required'),
),
次のように、4 つのオプションが設定されたドロップダウンが表示されます。
Array
Array
Array
Array
私もこのように試しました:
'options' => array(
array => ('value' => 'authorizenet', 'label' => 'Credit Card (Authorize.net)'),
array => ('value' => 'paypal_express', 'label' => 'Paypal Express'),
array => ('value' => 'checkmo', 'label' => 'Check/Money Order'),
array => ('value' => 'free', 'label' => 'No Payment Required'),
),
しかし、私はエラーが発生します:
Parse error: syntax error, unexpected T_DOUBLE_ARROW, expecting '('