Следующий код позволяет добавить столбец на страницу заказов/продаж, на которой отображается способ доставки в качестве описания доставки, содержащего все носители доставки.Magento - Нарушение ограничения целостности: 1052 - Способ доставки
_prepareCollection
$collection->getSelect()->join('sales_flat_order', 'main_table.entity_id = sales_flat_order.entity_id',array('shipping_description'));
_prepareColumn
$this->addColumn('shipping_method', array(
'header' => Mage::helper('sales')->__('Shipping Method'),
'index' => 'shipping_description',
'filter_index' => 'main_table.status',
));
способ доставки кажется совершенным после того как я скомпилировать все. Теперь, когда я пытаюсь отсортировать заказы по prcessing и нажмите на поиск речь идет об этой ошибке:
SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'status' in where clause is ambiguous, query was: SELECT COUNT(*) FROM `sales_flat_order_grid` AS `main_table` INNER JOIN `sales_flat_order` ON main_table.entity_id = sales_flat_order.entity_id WHERE (status = 'processing')
После некоторых исследований это означает, что существует двойной статус, когда таблицы соединяются, теперь, как я создаю ALIANS от этого и как я его применяю. Кроме того, если кто-нибудь знает, как фильтровать/сортировать по этому столбцу, это будет потрясающе.
PS. Этот файл находится по адресу: приложения/код/местные/Mage/Adminhtml/Block/Sales/Order
EDIT: Теперь я пытаюсь выяснить, как создать варианты DropDown на основе значений в базе данных. Вот код, который я пытаюсь получить работу:
private static $_deliveryGroups = array();
public static function getDeliveryArray() {
if (count(self::$_deliveryGroups) == 0) {
$delivery_group = new Mage_Shipping_Model_Group();
$delivery_groups = $delivery_group->getColection()->toOptionHash();
self::$_deliveryGroups = $delivery_groups;
}
return self::$_deliveryGroups;
}
И дополнительные значения в Grid.php
$this->addColumn('shipping_method', array(
'header' => Mage::helper('sales')->__('Shipping Method'),
'renderer' => 'Vehence_Module_Block_Adminhtml_Block_Sales_Order_Desc',
'type' => 'options',
'options' => Vehence_Module_Block_Adminhtml_Block_Sales_Order_Desc::getDeliveryArray(),
));
И это:
protected function _getAttributeOptions($attribute_code)
{
$attribute = Mage::getModel('sales/order')->getAttribute('shipping_description', $attribute_code);
$options = array();
foreach($attribute->getSource()->getAllOptions(true, true) as $option) {
$options[$option['value']] = $option['label'];
}
return $options;
}
Не могли бы вы рассказать, как мне создать этот обычай вынести, я не уверен в управлении файлами в этой области, если бы я мог создать это в grid.php или внешнего класса - где бы он будет размещен. Я действительно не хочу создавать модуль. – damek132
обновлен. Я не рекомендую вам переписывать или редактировать основные файлы. Лучше создайте новый модуль. – zhartaunik
Не уверен, что вы заметили, но я скопировал основной файл и работал с тем же файлом в локальной папке: app/code/local/Mage/Adminhtml/Block/Sales/Order – damek132