Должен ли sales/order/create/data.phtml выводить дочерний элемент дополнительной информации о товаре заказа?


Я думаю, что, возможно, я наткнулся на основной дефект, но не уверен на 100%.

Экспонат А:

<!-- adminhtml/default/default/layout/sales.xml -->
<block type="adminhtml/sales_order_create_data" template="sales/order/create/data.phtml" name="data">
    ...
    <block type="core/text_list" name="order_item_extra_info"></block>
</block>

Экспонат В:

<!-- adminhtml/default/default/template/sales/order/create/data.phtml -->
No reference to order_item_extra_info to be found

В моем конкретном случае я пытаюсь внедрить шаблон в этот текстовый список, чтобы внедрить некоторый javascript, который будет выполняться после загрузки адреса доставки в подпрограмму создания внутреннего заказа.

Поэтому я просто добавил <?php echo $this->getChildHtml('order_item_extra_info') ?> в data.phtml, но хотел убедиться, что это основное исправление, а не основной взлом.

 3
Author: kalenjordan, 2014-03-20

2 answers

Я работал над этим вопросом последние пару недель безрезультатно. Поддержка Magento не принесла большой пользы в том виде, в каком она есть

"не удалось устранить эту проблему, так как это скорее запрос на улучшение, поскольку в наших собственных макетах нет такого определения именно для этого шаблона".

Простое добавление <?php echo $this->getChildHtml('order_item_extra_info') ?> в нижнюю часть adminhtml/default/default/template/sales/order/create/data.phtml фактически позволяет отображать пользовательские формы в нижней части страницы создания заказа в панели администратора.

Вот пример, в котором я ввел простое "Привет, мир".

hello world working

Однако по какой-то причине это также нарушает функциональность "Повторного заказа", и шаблон отображается в странном месте на этой странице, прямо там, где вы должны добавлять продукты вместо этого.

hello world in wrong place

Это выглядит немного глупо, когда "Привет, мир" появляется не в том месте, но если бы я заменил это полноценной формой, это выглядело бы безумно и сломало бы много функциональность.

Видя, что эта форма явно не работает (даже при взломе ядра) Я думаю, что лучший подход - создать новую вкладку на странице Просмотра заказов в панели администратора и добавить туда свой пользовательский элемент формы.

Ваш XML-файл макета должен выглядеть примерно так:

<adminhtml_sales_order_view>
    <reference name="sales_order_tabs">
        <action method="addTab">
            <name>your_name.goes_here</name>
            <block>namespace_module/adminhtml_sales_order_whatever_tab</block>
        </action>
    </reference>
</adminhtml_sales_order_view>

Тогда все, что вам нужно сделать, это создать блок (который, я думаю, определяет его шаблон с помощью $this->setTemplate в конструкторе), который implements Mage_Adminhtml_Block_Widget_Tab_Interface и extends Mage_Adminhtml_Block_Widget

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

 1
Author: Luke Rodgers, 2016-04-25 19:55:22

Похоже, что это, по сути, основная ошибка.

 0
Author: kalenjordan, 2014-04-08 22:27:47