public function afterGridPrepareCollection(Mage_Adminhtml_Block_Widget_Grid $grid)
 {
     $blockType = $grid->getType();
     $blockId = $grid->getId();
     if (!is_null($model = $this->_getGridModel($blockType, $blockId, true)) && !$model->getDisabled()) {
         if ($grid->getCollection()) {
             // Check grid model against grid columns
             $grid->getCollection()->load();
             $applyFromCollection = $model->checkColumnsAgainstGridBlock($grid);
             // Apply it to grid block (only apply from collection if it could be checked)
             $model->applyColumnsToGridBlock($grid, $applyFromCollection);
             // Finish to prepare grid collection
             $grid->blcg_finishPrepareCollection();
         } else {
             // If grid has no collection, check and apply directly
             $model->checkColumnsAgainstGridBlock($grid);
             $model->applyColumnsToGridBlock($grid, false);
         }
     }
 }
示例#2
0
 /**
  * Init values with grid block instance
  * 
  * @param Mage_Adminhtml_Block_Widget_Grid $grid Grid block instance
  * @return this
  */
 public function initWithGridBlock(Mage_Adminhtml_Block_Widget_Grid $grid)
 {
     // Init global grid values
     $this->addData(array('block_id' => $grid->getId(), 'block_type' => $grid->getType()));
     $this->_initTypeModel();
     // Init columns
     $this->resetColumns();
     $order = 0;
     $gridIndexes = array();
     foreach ($grid->getColumns() as $column) {
         // Take all columns from grid
         $this->_addColumnFromBlock($column, ++$order * $this->getOrderPitch(), self::GRID_COLUMN_ORIGIN_GRID);
         $gridIndexes[] = $column->getIndex();
     }
     if ($grid->getCollection() && $grid->getCollection()->count() > 0) {
         // Initialize collection columns if possible
         $item = $grid->getCollection()->getFirstItem();
         foreach ($item->getData() as $key => $value) {
             if (!in_array($key, $gridIndexes, true) && !in_array($key, $this->_originIds[self::GRID_COLUMN_ORIGIN_GRID], true) && (is_scalar($value) || is_null($value))) {
                 /*
                 From collection, only take columns that are not already used by grid,
                 and do not correspond to array / object / resource values
                 */
                 $this->_addColumnFromCollection($key, ++$order * $this->getOrderPitch());
             }
         }
     }
     return $this;
 }