2016-08-08 31 views
0

Das ist mein adminhtml Produkte grid.php ist:Magento/Adminhtml - Empfangsfehler während in Produkte Raster für benutzerdefinierte Spalte zu suchen versuchen

class Mage_Adminhtml_Block_Catalog_Product_Grid extends Mage_Adminhtml_Block_Widget_Grid 
{ 

    public function __construct() 
    { 
     parent::__construct(); 
     $this->setId('productGrid'); 
     $this->setDefaultSort('entity_id'); 
     $this->setDefaultDir('DESC'); 
     $this->setSaveParametersInSession(true); 
     $this->setUseAjax(true); 
     $this->setVarNameFilter('product_filter'); 

    } 

    protected function _getStore() 
    { 
     $storeId = (int) $this->getRequest()->getParam('store', 0); 
     return Mage::app()->getStore($storeId); 
    } 

    protected function _prepareCollection() 
    { 
     $store = $this->_getStore(); 
     $collection = Mage::getModel('catalog/product')->getCollection() 
      ->addAttributeToSelect('sku') 
      ->addAttributeToSelect('name') 
      ->addAttributeToSelect('attribute_set_id') 
      ->addAttributeToSelect('type_id'); 

     if (Mage::helper('catalog')->isModuleEnabled('Mage_CatalogInventory')) { 
      $collection->joinField('qty', 
       'cataloginventory/stock_item', 
       'qty', 
       'product_id=entity_id', 
       '{{table}}.stock_id=1', 
       'left'); 
     } 
     if ($store->getId()) { 
      //$collection->setStoreId($store->getId()); 
      $adminStore = Mage_Core_Model_App::ADMIN_STORE_ID; 
      $collection->addStoreFilter($store); 
      $collection->joinAttribute(
       'name', 
       'catalog_product/name', 
       'entity_id', 
       null, 
       'inner', 
       $adminStore 
      ); 
      $collection->joinAttribute(
       'custom_name', 
       'catalog_product/name', 
       'entity_id', 
       null, 
       'inner', 
       $store->getId() 
      ); 
      $collection->joinAttribute(
       'status', 
       'catalog_product/status', 
       'entity_id', 
       null, 
       'inner', 
       $store->getId() 
      ); 
      $collection->joinAttribute(
       'visibility', 
       'catalog_product/visibility', 
       'entity_id', 
       null, 
       'inner', 
       $store->getId() 
      ); 
      $collection->joinAttribute(
       'price', 
       'catalog_product/price', 
       'entity_id', 
       null, 
       'left', 
       $store->getId() 
      ); 
     } 
     else { 
      $collection->addAttributeToSelect('price'); 
      $collection->joinAttribute('status', 'catalog_product/status', 'entity_id', null, 'inner'); 
      $collection->joinAttribute('visibility', 'catalog_product/visibility', 'entity_id', null, 'inner'); 
     } 

     $collection->getSelect()->joinLeft( 
     array('order_item'=>'sales_flat_order_item'), 
     'e.entity_id = order_item.product_id', 
     array('order_item.product_id','order_item.order_id') 
     ); 
     $collection->getSelect()->joinLeft( 
       array('order'=>'sales_flat_order'), 
       'order_item.order_id = `order`.entity_id', 
       array('order.increment_id') 
       ); 
     $collection->getSelect()->group('e.entity_id'); 


     $this->setCollection($collection); 

     parent::_prepareCollection(); 
     $this->getCollection()->addWebsiteNamesToResult(); 
     return $this; 
    } 

    protected function _addColumnFilterToCollection($column) 
    { 
     if ($this->getCollection()) { 
      if ($column->getId() == 'websites') { 
       $this->getCollection()->joinField('websites', 
        'catalog/product_website', 
        'website_id', 
        'product_id=entity_id', 
        null, 
        'left'); 
      } 
     } 
     return parent::_addColumnFilterToCollection($column); 
    } 

    protected function _prepareColumns() 
    { 
     $this->addColumn('entity_id', 
      array(
       'header'=> Mage::helper('catalog')->__('ID'), 
       'width' => '50px', 
       'type' => 'number', 
       'index' => 'entity_id', 
     )); 
     $this->addColumn('name', 
      array(
       'header'=> Mage::helper('catalog')->__('Name'), 
       'index' => 'name', 
     )); 

     $store = $this->_getStore(); 
     if ($store->getId()) { 
      $this->addColumn('custom_name', 
       array(
        'header'=> Mage::helper('catalog')->__('Name in %s', $store->getName()), 
        'index' => 'custom_name', 
      )); 
     } 

     $this->addColumn('type', 
      array(
       'header'=> Mage::helper('catalog')->__('Type'), 
       'width' => '60px', 
       'index' => 'type_id', 
       'type' => 'options', 
       'options' => Mage::getSingleton('catalog/product_type')->getOptionArray(), 
     )); 

     $sets = Mage::getResourceModel('eav/entity_attribute_set_collection') 
      ->setEntityTypeFilter(Mage::getModel('catalog/product')->getResource()->getTypeId()) 
      ->load() 
      ->toOptionHash(); 

     $this->addColumn('set_name', 
      array(
       'header'=> Mage::helper('catalog')->__('Attrib. Set Name'), 
       'width' => '100px', 
       'index' => 'attribute_set_id', 
       'type' => 'options', 
       'options' => $sets, 
     )); 

     $this->addColumn('sku', 
      array(
       'header'=> Mage::helper('catalog')->__('SKU'), 
       'width' => '80px', 
       'index' => 'sku', 
     )); 

     $this->addColumn('increment_id', 
      array(
       'header'=> Mage::helper('catalog')->__('Поръчка №'), 
       'width' => '100px', 
       'index' => 'increment_id', 
     )); 

     $store = $this->_getStore(); 
     $this->addColumn('price', 
      array(
       'header'=> Mage::helper('catalog')->__('Price'), 
       'type' => 'price', 
       'currency_code' => $store->getBaseCurrency()->getCode(), 
       'index' => 'price', 
     )); 

     if (Mage::helper('catalog')->isModuleEnabled('Mage_CatalogInventory')) { 
      $this->addColumn('qty', 
       array(
        'header'=> Mage::helper('catalog')->__('Qty'), 
        'width' => '100px', 
        'type' => 'number', 
        'index' => 'qty', 
      )); 
     } 

     $this->addColumn('visibility', 
      array(
       'header'=> Mage::helper('catalog')->__('Visibility'), 
       'width' => '70px', 
       'index' => 'visibility', 
       'type' => 'options', 
       'options' => Mage::getModel('catalog/product_visibility')->getOptionArray(), 
     )); 

     $this->addColumn('status', 
      array(
       'header'=> Mage::helper('catalog')->__('Status'), 
       'width' => '70px', 
       'index' => 'status', 
       'type' => 'options', 
       'options' => Mage::getSingleton('catalog/product_status')->getOptionArray(), 
     )); 

     if (!Mage::app()->isSingleStoreMode()) { 
      $this->addColumn('websites', 
       array(
        'header'=> Mage::helper('catalog')->__('Websites'), 
        'width' => '100px', 
        'sortable' => false, 
        'index'  => 'websites', 
        'type'  => 'options', 
        'options' => Mage::getModel('core/website')->getCollection()->toOptionHash(), 
      )); 
     } 

     $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', 
     )); 

     if (Mage::helper('catalog')->isModuleEnabled('Mage_Rss')) { 
      $this->addRssList('rss/catalog/notifystock', Mage::helper('catalog')->__('Notify Low Stock RSS')); 
     } 

     return parent::_prepareColumns(); 
    } 

    protected function _prepareMassaction() 
    { 
     $this->setMassactionIdField('entity_id'); 
     $this->getMassactionBlock()->setFormFieldName('product'); 

     $this->getMassactionBlock()->addItem('delete', array(
      'label'=> Mage::helper('catalog')->__('Delete'), 
      'url' => $this->getUrl('*/*/massDelete'), 
      'confirm' => Mage::helper('catalog')->__('Are you sure?') 
     )); 

     $statuses = Mage::getSingleton('catalog/product_status')->getOptionArray(); 

     array_unshift($statuses, array('label'=>'', 'value'=>'')); 
     $this->getMassactionBlock()->addItem('status', array(
      'label'=> Mage::helper('catalog')->__('Change status'), 
      'url' => $this->getUrl('*/*/massStatus', array('_current'=>true)), 
      'additional' => array(
        'visibility' => array(
         'name' => 'status', 
         'type' => 'select', 
         'class' => 'required-entry', 
         'label' => Mage::helper('catalog')->__('Status'), 
         'values' => $statuses 
        ) 
      ) 
     )); 

     if (Mage::getSingleton('admin/session')->isAllowed('catalog/update_attributes')){ 
      $this->getMassactionBlock()->addItem('attributes', array(
       'label' => Mage::helper('catalog')->__('Update Attributes'), 
       'url' => $this->getUrl('*/catalog_product_action_attribute/edit', array('_current'=>true)) 
      )); 
     } 

     Mage::dispatchEvent('adminhtml_catalog_product_grid_prepare_massaction', array('block' => $this)); 
     return $this; 
    } 

    public function getGridUrl() 
    { 
     return $this->getUrl('*/*/grid', array('_current'=>true)); 
    } 

    public function getRowUrl($row) 
    { 
     return $this->getUrl('*/*/edit', array(
      'store'=>$this->getRequest()->getParam('store'), 
      'id'=>$row->getId()) 
     ); 
    } 
} 

Mit diesem Code i neue Spalte der Produkte Gitter am Hinzufügen, wo ich zeigen die Aufstockungsauftrags-ID, in welcher Reihenfolge dieses Produkt vorliegt.

In unserem Geschäft kann ein Produkt nicht in mehr als einer Bestellung vorhanden sein.

Also hier ist es, wie es aussieht:

enter image description here

Alles ist in Ordnung. Das Problem tritt auf, wenn ich versuche, in diesem Raster mit der Order Increcement ID zu suchen. Ich erhalte den folgenden Fehler:

Wo ist mein Fehler und warum meine Suche nicht funktioniert? Alles, was ich will, ist, wenn ich Order Increement ID in der adminhtml Product Grid eingeben und eine Suche starten, um alle Produkte anzuzeigen, die in der Reihenfolge mit der Increcement-ID enthalten sind, für die ich die Suche mache.

Ich hoffe, ich habe es gut erklärt.

Wir freuen uns auf Ihre Hilfe und Antworten.

Mit freundlichen Grüßen.

Antwort

0
$this->addColumn('increment_id', 
    array(
     'header'=> Mage::helper('catalog')->__('Поръчка №'), 
     'width' => '100px', 
     'index' => 'order.increment_id', 
)); 
+0

Danke für das Problem, aber immer noch den gleichen Fehler. Es löst den Fehler nicht auf. –

+0

Während dieses Code-Snippet die Frage lösen kann, hilft [einschließlich einer Erklärung] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich, die Qualität Ihres Posts zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. Bitte versuchen Sie auch nicht, Ihren Code mit erklärenden Kommentaren zu füllen, dies reduziert die Lesbarkeit sowohl des Codes als auch der Erklärungen! –

+0

Die Antwort in dieser Phase löst die Frage nicht. –