2016-09-18 2 views
0

я пытаюсь var_dump($order), но это дает мне:GetOrder() не возвращает Mage_Sales_Model_Order при отладке

object(Varien_Object)#290 (7) { ["_data":protected]=> array(0) { } ["_hasDataChanges":protected]=> bool(false) ["_origData":protected]=> NULL ["_idFieldName":protected]=> NULL ["_isDeleted":protected]=> bool(false) ["_oldFieldsMap":protected]=> array(0) { } ["_syncFieldsMap":protected]=> array(0) { } } 

class PaketId_Shipping_Block_Adminhtml_Sales_Order_Shipment_View_Shipping extends Mage_Sales_Block_Order_Shipment { Мой

protected $order; 

public function getOrder() { 
    if (is_null($this->order)) { 
     if (Mage::registry('current_order')) { 
      $order = Mage::registry('current_order'); 
     } 
     elseif (Mage::registry('order')) { 
      $order = Mage::registry('order'); 
     } 
     else { 
      $order = new Varien_Object(); 
     } 
     $this->order = $order; 
    } 
    return $this->order; 
} 

Мой PHTML файл:

<?php echo $this->getChildHtml('PaketId_Shipping');?> 
<h1>Test custom block</h1> 
<?php $order = $this->getOrder()?> 
<?php var_dump($order);?> 
<?php $shippings = Mage::getModel('paketid_shipping/result')->getCollection()->addOrderFilter($order) ?> 
<?php echo "<pre>";?> 
<?php var_dump($shippings);?> 
<?php echo "</pre>" ;?> 

Мои переменная $order в файле phtml как-то не вызывает $order в блочном файле, или я не понимаю этого? Потому что, когда я пытаюсь var_dump($order) в другом PHTML, он возвращает object(Mage_Sales_Model_Order)#276...

Я попытался изменить $this-getOrder() в Mage::registry('current_order'), но это дает мне NULL. Что я сделал не так?

Моя коллекция:

class PaketId_Shipping_Model_Resource_Result_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract 
{ 

protected function _construct() 
{ 
    parent::_construct(); 
    $this->_init('paketid_shipping/result'); 
} 
public function addOrderFilter($order) 
{ 
    if ($order instanceof Mage_Sales_Model_Order) { 
     $order = (int) $order->getId(); 
    } 
    if (!is_array($order)) { 
     $order = array($order); 
    } 

    $this->getSelect()->where("main_table.order_id IN (?)", $order); 

    return $this; 
} 
protected function _toOptionArray($valueField='entity_id', $labelField='booking_code', $additional=array()) 
{ 
    return parent::_toOptionArray($valueField, $labelField, $additional); 
} 
protected function _toOptionHash($valueField='entity_id', $labelField='booking_code') 
{ 
    return parent::_toOptionHash($valueField, $labelField); 
} 
public function getSelectCountSql() 
{ 
    $countSelect = parent::getSelectCountSql(); 
    $countSelect->reset(Zend_Db_Select::GROUP); 
    return $countSelect; 
} 

Мой ресурс:

class PaketId_Shipping_Model_Resource_Result extends Mage_Core_Model_Resource_Db_Abstract 
public function _construct() 
{ 
    $this->_init('paketid_shipping/result', 'entity_id'); 
} 

Мой результат:

class PaketId_Shipping_Model_Result extends Mage_Core_Model_Abstract 
const ENTITY = 'paketid_shipping_result'; 
const CACHE_TAG = 'paketid_shipping_result'; 
protected $_eventPrefix = 'paketid_shipping_result'; 
protected $_eventObject = 'paketid_shipping_result'; 
public function _construct() 
{ 
    parent::_construct(); 
    $this->_init('paketid_shipping/result'); 
} 

Администратор макета XML:

<layout version="1.0"> 
<adminhtml_sales_order_shipment_new> 
    <reference name="content"> 
     <block type="paketid_shipping/adminhtml_sales_order_shipment_view_shipping" name="paketid_shipping.order.view.shipping.block" template="paketid/shipping.phtml"/> 
    </reference> 
</adminhtml_sales_order_shipment_new> 

ответ

0

Просьба расширить класс модуля от Mage_Sales_Block_Order_Shipment или от вызова Mage_Sales_Block_Order_View и проверить, надеется, что это поможет.

+0

спасибо, но какой файл? Я имею в виду, распространяется на изменение Mage_Sales_Block_Order_View на что? – may

+0

Я редактирую ваш код блока, и вы только что заменили его. – MagentoDeveloper

+0

Я только что заменил Mage_Core_Block_Template на Mage_Sales_Block_Order_Shipment – MagentoDeveloper