Мне нужен очень специфический функционал.
ЦЕЛЬ:
Мне нужно сгенерировать конкретный файл TXT или XLS со строгим шаблоном, куда я помещу содержимое веб-формы, когда кто-то отправляет форму. || Сохраните содержимое формы в файл TXT / XLS с предварительно заданным шаблоном. (что легче понять :))
И сохраните его на другом сервере, кроме самого Magento, в нужную папку, по запросу FTP или отправьте по электронной почте.
Я использую в расширении Magento: WebForm от MageMe: https://mageme.com/docs/magento-form-builder/add-custom-functionality-to-submission.html
Структура файла WebFormsProcessResult
Всего содержит 4 файла.
app / etc / modules / VladimirPopov_WebFormsProcessResult.xml
<?xml version="1.0"?>
<config>
<modules>
<VladimirPopov_WebFormsProcessResult>
<active>true</active>
<codePool>community</codePool>
</VladimirPopov_WebFormsProcessResult>
</modules>
</config>
etc / config.xml
<?xml version="1.0"?>
<config>
<modules>
<VladimirPopov_WebFormsProcessResult>
<version>1.0.0</version>
</VladimirPopov_WebFormsProcessResult>
</modules>
<adminhtml>
<acl>
<resources>
<all>
<title>Allow Everything</title>
</all>
</resources>
</acl>
</adminhtml>
<global>
<models>
<webformsprocessresult>
<class>VladimirPopov_WebFormsProcessResult_Model</class>
</webformsprocessresult>
</models>
<events>
<webforms_result_submit>
<observers>
<webforms_result_submit_observer>
<type>singleton</type>
<class>VladimirPopov_WebFormsProcessResult_Model_Observer</class>
<method>exportXML</method>
</webforms_result_submit_observer>
</observers>
</webforms_result_submit>
</events>
</global>
</config>
etc / system.xml
<?xml version="1.0"?>
<config>
<sections>
<webforms>
<groups>
<processresult translate="label comment">
<comment></comment>
<label>Results Post Processing</label>
<frontend_type>text</frontend_type>
<sort_order>1000</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<fields>
<enable translate="label comment">
<comment>
<![CDATA[Results will be additionally processed by custom function]]>
</comment>
<label>Enable results post processing</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>10</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</enable>
</fields>
</processresult>
</groups>
</webforms>
</sections>
</config>
Model / Observer.php
<?php
class VladimirPopov_WebFormsProcessResult_Model_Observer{
public function exportXML($observer){
if(!Mage::getStoreConfig('webforms/processresult/enable')) return;
$webform = $observer->getWebform();
/*
* Check web-form code
* if($webform->getCode() != 'myform') return;
*/
$result = Mage::getModel('webforms/results')->load($observer->getResult()->getId());
$xmlObject = new Varien_Simplexml_Config($result->toXml());
// generate unique filename
$destinationFolder = Mage::getBaseDir('media') . DS . 'webforms' . DS . 'xml';
$filename = $destinationFolder . DS . $result->getId().'.xml';
// create folder
if (!(@is_dir($destinationFolder) || @mkdir($destinationFolder, 0777, true))) {
throw new Exception("Unable to create directory '{$destinationFolder}'.");
}
// export to file
$xmlObject->getNode()->asNiceXml($filename);
}
}
?>
ToXml функция:
public function toXml(array $arrAttributes = array(), $rootName = 'item', $addOpenTag = false, $addCdata = true)
{
$webform = Mage::getModel('webforms/webforms')
->setStoreId($this->getStoreId())
->load($this->getWebformId());
if ($webform->getCode())
$this->setData('webform_code', $webform->getCode());
foreach ($this->getData() as $key => $value) {
if (strstr($key, 'field_')) {
$field = Mage::getModel('webforms/fields')
->setStoreId($this->getStoreId())
->load(str_replace('field_', '', $key));
if (!empty($field) && $field->getCode()) {
$this->setData($field->getCode(), $value);
}
}
}
return parent::toXml($arrAttributes, $rootName, $addOpenTag, $addCdata);
}
Выше код генерирует вывод, как это:
ТЕКУЩИЙ РЕЗУЛЬТАТ | ВЫХОД :
<item>
<id>36782</id>
<webform_id>6</webform_id>
<store_id>1</store_id>
<customer_id>0</customer_id>
<customer_ip>0</customer_ip>
<created_time>2018-12-19 15:40:01</created_time>
<update_time>2018-12-19 15:40:01</update_time>
<approved>1</approved>
<field_63>Honnig</field_63>
<key_63/>
<field_64>Winnie</field_64>
<key_64/>
<field_65>Pooh</field_65>
<key_65/>
<field_66>BigTree</field_66>
<key_66/>
<field_67>12342</field_67>
<key_67/>
<field_68>Forest</field_68>
<key_68/>
<field_69>123</field_69>
<key_69/>
<field_70>[email protected]</field_70>
<key_70/>
<field_80>I need honey</field_80>
<key_80/>
<field_81>1234</field_81>
<key_81/>
<field_502>winniepoooh.wl/honig.html</field_502>
<key_502/>
<ip>0.0.0.0</ip>
<webform_code>honnig</webform_code>
<hidden_title>Sweet Honig</hidden_title>
<name>Winnie</name>
<nachname>Pooh</nachname>
<strasse>BigTree</strasse>
<plz>123</plz>
<city>Forest</city>
<phone>23412341234</phone>
<email>[email protected]</email>
<bemerkungen>I need Honig</bemerkungen>
<bedarf>1234</bedarf>
<hidden_url>winniepoooh.wl/honig.html</hidden_url>
</item>
Так что сейчас я могу экспортировать всю структуру формы с HTML-тегами.
ЦЕЛЬ:
Мне нужно создать конкретный шаблон, куда я помещу содержимое этой формы, когда кто-то передает форму.
И сохраните его на другом сервере, в нужную папку по FTP-запросу.
Я хотел бы передать этот шаблон для кода выше | Сохраните содержимое формы в этом шаблоне как файл TXT или XLS:
НУЖЕН РЕЗУЛЬТАТ | ВЫХОД :
###ANREDE:#
###VORNAME:Pooh#
###NAME:Winnie#
###STRASSE:BigTree 8#
###ORT:Neverland#
###PLZ:111111#
###TELEFON:0123456789#
###LAND:WL#
###FIRMA:#
###TELEFAX:#
###LIEFERANSCHRIFT:
Winnie
Pooh
BigTree 8
11111 Forest
WL
Telefon: 0123456789#
###POS_NR:1#
###POS_ARTIKELBE:Honnig#
###POS_ARTIKELNR:123#
###POS_EPREIS:12#
###POS_GPREIS:13#
###POS_ANZAHL:1#
###POS_RABATT:0,0#
###VERSAND:PayPal#
###BEMERKUNG:1#
###BESTELLNUMMER:123#
###EMAIL:[email protected]#
###STEUER:1#
###VERSANDKOSTEN:13#
Я также предполагал возможность сделать это с помощью jQuery сохранить при отправке. Что лучше и проще? Я приму каждое полезное решение!
Пожалуйста, помогите мне, я не очень хорош в PHP или Magento: / Спасибо, ребята!
Задача ещё не решена.
Других решений пока нет …