Должен ли 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
, но хотел убедиться, что это основное исправление, а не основной взлом.
2 answers
Я работал над этим вопросом последние пару недель безрезультатно. Поддержка Magento не принесла большой пользы в том виде, в каком она есть
"не удалось устранить эту проблему, так как это скорее запрос на улучшение, поскольку в наших собственных макетах нет такого определения именно для этого шаблона".
Простое добавление <?php echo $this->getChildHtml('order_item_extra_info') ?>
в нижнюю часть adminhtml/default/default/template/sales/order/create/data.phtml
фактически позволяет отображать пользовательские формы в нижней части страницы создания заказа в панели администратора.
Вот пример, в котором я ввел простое "Привет, мир".
Однако по какой-то причине это также нарушает функциональность "Повторного заказа", и шаблон отображается в странном месте на этой странице, прямо там, где вы должны добавлять продукты вместо этого.
Это выглядит немного глупо, когда "Привет, мир" появляется не в том месте, но если бы я заменил это полноценной формой, это выглядело бы безумно и сломало бы много функциональность.
Видя, что эта форма явно не работает (даже при взломе ядра) Я думаю, что лучший подход - создать новую вкладку на странице Просмотра заказов в панели администратора и добавить туда свой пользовательский элемент формы.
Ваш 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, и вы все еще можете добавлять дополнительные данные в заказ панели администратора.
Похоже, что это, по сути, основная ошибка.