Как получить список идентификаторов заказов для вошедшего в систему клиента и создать поле выбора в форме в magento?

Я новичок в мадженто. Я создал пользовательский модуль, в котором я хочу отобразить поле выбора для перечисления идентификаторов заказов этого конкретного зарегистрированного заказа клиента. Я изо всех сил пытаюсь это сделать.

Мой код формы здесь:

                <?php
        class Blazedream_CustomerComplaints_Block_Complaints_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
        {
                public function getOrderData()
                {
                    $orders = Mage::getResourceModel('sales/order_collection')
                    ->addFieldToSelect('*')
                    ->addFieldToFilter('customer_id', Mage::getSingleton('customer/session')->getCustomer()->getId())
                    ->addFieldToFilter('state', array('in' => Mage::getSingleton('sales/order_config')->getVisibleOnFrontStates()))
                    ->setOrder('created_at', 'desc');   
                    $this->setOrders($orders); 
                    foreach ($orders as $order):
                       return $order->getRealOrderId();
                    endforeach;
                }

                protected function _prepareForm()
                {
                        $customer = Mage::getSingleton('customer/session')->getCustomer();
                        $customerId=$customer->getId();
                        $cus_name=$customer->getName();
                        $emailId=$customer->getEmail();
                        $form = new Varien_Data_Form();
                        $this->setForm($form);
                        $fieldset = $form->addFieldset("customercomplaints_form", array("legend"=>Mage::helper("customercomplaints")->__("Item information")));

                        $three_columns = "col-xs-12 col-sm-4 col-md-4 col-lg-4";
                        $one_column = "col-xs-12 col-sm-12 col-md-12 col-lg-12";

                                $fieldset->addField("customer_complaints_id", "hidden", array(
                                "label" => Mage::helper("customercomplaints")->__("Id"),
                                "name" => "customer_complaints_id",
                                ));

                                $fieldset->addField("name", "text", array(
                                "label" => Mage::helper("customercomplaints")->__("Name"),
                                "name" => "name",
                                "class"=> "required-entry",
                                'readonly'=>true,
                                'required' => true,
                                'value' =>$cus_name,
                                'container_class' => $three_columns
                                ));
                                $fieldset->addField('order_id1', 'select', array(  
                                'name' => 'order_id1',  
                                'label' => 'Order Id1',  
                                'values' => $this->getOrderData(),  
                                ));

                        if (Mage::getSingleton("adminhtml/session")->getComplaintsData())
                        {
                            $form->setValues(Mage::getSingleton("adminhtml/session")->getComplaintsData());
                            Mage::getSingleton("adminhtml/session")->setComplaintsData(null);
                        } 
                        elseif(Mage::registry("complaints_data")) {
                            $form->setValues(Mage::registry("complaints_data")->getData());
                        }
                        return parent::_prepareForm();
                }
        }

Мой файл просмотра:

     <div class="return-policy vendor-suggestion-main my-account">
    <div class="page-title">
        <h1>Complaints</h1>
    </div>
        <form action="<?php echo $this->getSaveUrl() ?>" method="post" id="customer_complaints_form" enctype="multipart/form-data">
        <input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey();?>" />
            <?php echo $this->getBlockHtml('formkey')?>
            <div style="display:none"></div>
            <?php echo $this->getChildHtml("complaints_edit_form") ?>

            <div class="return-order-submit">
            <p class="content-buttons form-buttons">    
            <?php echo $this->getSaveButtonHtml() ?>
        </p>
        </div>
        </form>

    </div>

    <script type="text/javascript">

        var customerComplaints = new VarienForm('customer_complaints_form', true); // '<?php echo $this->getValidationUrl() ?>');
        customerComplaints._processValidationResult = function(transport) {
            var response = transport.responseText.evalJSON();
            if (response.error){
                if (response.attribute && $(response.attribute)) {
                    $(response.attribute).setHasError(true, customerComplaints);
                    Validation.ajaxError($(response.attribute), response.message);
                    if (!Prototype.Browser.IE){
                        $(response.attribute).focus();
                    }
                }
                else if ($('messages')) {
                    $('messages').innerHTML = '<ul class="messages"><li class="error-msg"><ul><li>' + response.message + '</li></ul></li></ul>';
                }
            }
            else{
                customerComplaints._submit();
            }
        };

    </script>

Может ли кто-нибудь сказать мне, как это сделать??

Заранее спасибо.


person tttt    schedule 24.09.2015    source источник
comment
Не могли бы вы определить вошедшего в систему клиента? Я считаю, что ваш блок-класс находится в админке, но вы пытаетесь получить зарегистрированного клиента, который должен быть на интерфейсе. $customer = Mage::getSingleton('клиент/сеанс')->getCustomer();   -  person zokibtmkd    schedule 27.09.2015


Ответы (1)


Я создал такую ​​функцию:

  public function getOrderData()
    {
        $orders = Mage::getResourceModel('sales/order_collection')
        ->addFieldToSelect('*')
        ->addFieldToFilter('customer_id', Mage::getSingleton('customer/session')->getCustomer()->getId())
        ->setOrder('created_at', 'desc');   
        $this->setOrders($orders); 
        $i = 1;
        $data[] = '--- Please Select ---';
        foreach ($orders as $order):
           $data[$order->getRealOrderId()] = $order->getRealOrderId();
           $i++;
        endforeach;
        return $data;
    }

Затем я вызвал эту функцию в своем наборе полей формы следующим образом:

 $fieldset->addField('order_id', 'select', array(  
                    "label" => Mage::helper("customercomplaints")->__("Order Id"),
                    'name' => 'order_id',  
                    "class"=> "required-entry",
                    'values' => $this->getOrderData(), 
                    'container_class' => $three_columns 
                    ));

Я получил раскрывающийся список со списком идентификаторов заказов, заказанных клиентом.

person tttt    schedule 28.09.2015