Próbuję dodać niestandardową kolumnę do siatki zamówienia sprzedaży, a do kolekcji dodano kolumnę łączenia i kolumnę, ale kolumna jest pusta. Ponadto, gdy próbuję filtrować, pojawia się ten błąd: Nie znaleziono kolumny: 1054 Nieznana kolumna "metoda" w "gdzie klauzula". Mój kod wydaje się być taki sam, jak w większości tutoriali, więc nie mogę się domyślić, dlaczego moja kolumna jest pozbawiona danych dotyczących płatności. Powtórzyłem ostatnie zapytanie SQL i uruchomiłem je w MySQL Workbench, a wyniki i składnia wydają się być w porządku. Czy czegoś brakuje? Czy muszę dodać kolumnę do tabeli sales_flat_order_grid? Zdaję sobie sprawę, że moje "ładne" nazwy metod płatności mogą nie być zgodne z kodem płatności wyświetlanym w kolumnie, gdy przechodzę do filtrowania, ale mam te same problemy, gdy używam kodu płatności w opcjach filtrowania. Pomyślałem, że uderzę później w ten szczegół, gdy zdobędę dane z kolumny. Korzystam z Enterprise 1.12.0.2.Magento Dodaj metodę płatności do siatki zamówienia administratora
app/code/local/mymodule/adminhtml/block/sprzedaż/zlecenia/Siatka:
protected function _prepareCollection()
{
$collection = Mage::getResourceModel($this->_getCollectionClass());
$collection->getSelect()->joinLeft(array('sfop'=>'sales_flat_order_payment'), 'main_table.entity_id = sfop.parent_id',array('sfop.method'));
$this->setCollection($collection);
return parent::_prepareCollection();
}
protected function _prepareColumns()
{ //edited for brevity...only my additions below![enter image description here][1]
$payments = Mage::getSingleton('payment/config')->getActiveMethods();
$methods = array();
foreach ($payments as $paymentCode=>$paymentModel)
{
$paymentTitle = Mage::getStoreConfig('payment/'.$paymentCode.'/title');
$methods[$paymentCode] = $paymentTitle;
}
$this->addColumn('method', array(
'header' => Mage::helper('sales')->__('Payment Method'),
'index' => 'method',
'filter_index' => 'sfop.method',
'type' => 'options',
'width' => '70px',
'options' => $methods,
));
}
Dzięki! Chociaż otrzymałem błąd SQL "niejednoznaczna kolumna parent_id", więc musiałem zmienić "main_table.entity_id = parent_id" na "main_table.entity_id = payment.parent_id". Ponadto, ponieważ zmieniłeś alias tabeli z "sfop" na "payment", musisz powiązać odpowiednią zmianę z opcją "filter_index" w wywołaniu funkcji addColumn(). –