2013-03-18 52 views
0

我的目標很簡單。我有一個模塊調用行情,我設法讓Magento的創建一個新的報價記錄每一個車通過改變IS_ACTIVE列時報價是「簽出」創建時間。所以我有一大堆報價都與客戶有關,而且我的銷售/訂單金額行都與報價相關。 我在後端顯示一個網格的所有引號的頁面。當點擊報價單時,編輯頁面有兩個選項卡,其中一個用Form.php顯示報價的詳細信息。 (客戶名稱,日期等),然後我有另一個選項卡應該包含該報價中所有項目的網格。這似乎很簡單:使用Magento的Adminhtml電網銷售/ order_item收集由客戶過濾

$this->addTab("items_section", array(
    "label" => Mage::helper("quote")->__("Quote Items"), 
    "title" => Mage::helper("quote")->__("Quote Items"), 
    "content" => $this->getLayout()->createBlock("quote/adminhtml_quotes_edit_tab_cart")->toHtml(), 
)); 

然後在我的車擋我有這樣的:

protected function _prepareCollection() 
{ 
    $collection = Mage::getModel('sales/order_item')->getCollection(); 
    print_r($collection); 
    $this->setCollection($collection); 

    return parent::_prepareCollection(); 
} 

我沒有設置正確的採集(通過ORDER_ID)甚至興趣,因爲有一個問題是RO這裏首先要解決:該print_r聲明顯示我指定的集合,但它傳遞被$ this-> setCollection($集合)給我在網格渲染「沒有找到記錄」。在典型的Magento時尚中沒有錯誤等。我明白模型應該根據需要查詢數據庫,但似乎並沒有發生。我想它的時間來閱讀法師::核心文件,但你可以在這樣一個簡單的任務是如此複雜,所以我會很感激,如果誰知道這是怎麼回事就可以幫我想象我的無奈。提前致謝。

+0

這是一個好主意,btw – Dan 2015-09-11 16:57:49

回答

0

我們的首席開發人員設法幫助我解決問題。我們仍然不知道爲什麼但這似乎工作

protected function _prepareCollection() 
{ 
    $quoteId = $this->getRequest()->getParam('id'); 

    $quote = Mage::getModel('sales/quote')->getCollection()->addFieldToFilter('entity_id', $quoteId); 
    if ($quote->getFirstItem()->getId()) { 
     $collection = $quote->getFirstItem()->getItemsCollection(false); 
    } 
$this->setCollection($collection); 

    return parent::_prepareCollection(); 
} 
0

我可能是錯的,但你不能setCollection()與銷售訂單項目的報價。它必須填寫銷售/報價模型項目。

我不知道是什麼的$範圍這是_prepareCollection(),但因爲它的車塊,其處理報價我假設。

只是一個提示,你威力代替的print_r($集合),嘗試這樣做...

echo "<pre>"; 
foreach ($collection as $item) { 
    var_dump($item->debug()); 
} 

它提供非常簡單,只是在重要的信息,而不是數據庫結構。你也可以檢查你的物品類型,並確保你的setCollection方法使用了正確的模型。你也可以休息一下;在那裏,如果你想只得到第一個項目等。調試magento對象可能是乏味的,我發現這有助於。