2

Magento 交易电子邮件(来自管理员)

如何让 Magento 准确保存模板在 Admin 中的输入方式?对我来说,它会在代码中删除\转义字符,这样 Magneto 就无法在保存模板后重新打开模板。

例子:

在管理员中创建或加载新模板后,我使用如下代码保存 cms 页面:

{"store url=\"\"":"Store Url",
"var logo_url":"Email Logo Image Url",
"var logo_alt":"Email Logo Image Alt",
"htmlescape var=$order.getCustomerName()":"Customer Name",
"var store.getFrontendName()":"Store Name",
"store url=\"customer/account/\"":"Customer Account Url",
"var order.increment_id":"Order Id",
"var order.getCreatedAtFormated('long')":"Order Created At (datetime)",
"var order.getBillingAddress().format('html')":"Billing Address",
"var payment_html":"Payment Details",
"var order.getShippingAddress().format('html')":"Shipping Address",
"var order.getShippingDescription()":"Shipping Description",
"layout handle=\"sales_email_order_items\" order=$order":"Order Items Grid",
"var order.getEmailCustomerNote()":"Email Order Note"}

然后在我尝试重新打开它之后,我收到一条错误消息,Magento 甚至拒绝预览,更不用说编辑模板了。

处理您的请求时出现错误已记录错误,我们将审查其内容。清除您的 cookie 以获取 pumpunderwear。*,然后重试。如果您一次又一次地看到此问题,请稍后再回来,我们应该修复此问题。解码失败:语法错误

痕迹:

#0 /web/store/app/code/core/Mage/Core/Model/Email/Template.php(590): Zend_Json::decode('{"store url="""...')
#1 /web/store/app/code/core/Mage/Core/Model/Email/Template.php(604): Mage_Core_Model_Email_Template->_parseVariablesString('{"store url="""...')
#2 /web/store/app/code/core/Mage/Adminhtml/Block/System/Email/Template/Edit/Form.php(186): Mage_Core_Model_Email_Template->getVariablesOptionArray(true)
#3 /web/store/app/code/core/Mage/Adminhtml/Block/System/Email/Template/Edit/Form.php(112): Mage_Adminhtml_Block_System_Email_Template_Edit_Form->getVariables()
#4 /web/store/app/code/core/Mage/Adminhtml/Block/Widget/Form.php(144): Mage_Adminhtml_Block_System_Email_Template_Edit_Form->_prepareForm()
#5 /web/store/app/code/core/Mage/Core/Block/Abstract.php(918): Mage_Adminhtml_Block_Widget_Form->_beforeToHtml()
#6 /web/store/app/code/core/Mage/Core/Block/Abstract.php(637): Mage_Core_Block_Abstract->toHtml()
#7 /web/store/app/code/core/Mage/Core/Block/Abstract.php(581): Mage_Core_Block_Abstract->_getChildHtml('form', true)
#8 /web/store/app/code/core/Mage/Adminhtml/Block/System/Email/Template/Edit.php(235): Mage_Core_Block_Abstract->getChildHtml('form')
#9 /web/store/app/design/adminhtml/default/default/template/system/email/template/edit.phtml(108): Mage_Adminhtml_Block_System_Email_Template_Edit->getFormHtml()
#10 /web/store/app/code/core/Mage/Core/Block/Template.php(241): include('/var/www/www.pu...')
#11 /web/store/app/code/core/Mage/Core/Block/Template.php(272): Mage_Core_Block_Template->fetchView('adminhtml/defau...')
#12 /web/store/app/code/core/Mage/Core/Block/Template.php(286): Mage_Core_Block_Template->renderView()
#13 /web/store/app/code/core/Mage/Adminhtml/Block/Template.php(81): Mage_Core_Block_Template->_toHtml()
#14 /web/store/app/code/core/Mage/Core/Block/Abstract.php(919): Mage_Adminhtml_Block_Template->_toHtml()
#15 /web/store/app/code/core/Mage/Core/Block/Text/List.php(43): Mage_Core_Block_Abstract->toHtml()
#16 /web/store/app/code/core/Mage/Core/Block/Abstract.php(919): Mage_Core_Block_Text_List->_toHtml()
#17 /web/store/app/code/core/Mage/Core/Block/Abstract.php(637): Mage_Core_Block_Abstract->toHtml()
#18 /web/store/app/code/core/Mage/Core/Block/Abstract.php(581): Mage_Core_Block_Abstract->_getChildHtml('content', true)
#19 /web/store/app/design/adminhtml/default/default/template/page.phtml(74): Mage_Core_Block_Abstract->getChildHtml('content')
#20 /web/store/app/code/core/Mage/Core/Block/Template.php(241): include('/var/www/www.pu...')
#21 /web/store/app/code/core/Mage/Core/Block/Template.php(272): Mage_Core_Block_Template->fetchView('adminhtml/defau...')
#22 /web/store/app/code/core/Mage/Core/Block/Template.php(286): Mage_Core_Block_Template->renderView()
#23 /web/store/app/code/core/Mage/Adminhtml/Block/Template.php(81): Mage_Core_Block_Template->_toHtml()
#24 /web/store/app/code/core/Mage/Core/Block/Abstract.php(919): Mage_Adminhtml_Block_Template->_toHtml()
#25 /web/store/app/code/core/Mage/Core/Model/Layout.php(555): Mage_Core_Block_Abstract->toHtml()
#26 /web/store/app/code/core/Mage/Core/Controller/Varien/Action.php(390): Mage_Core_Model_Layout->getOutput()
#27 /web/store/app/code/core/Mage/Adminhtml/controllers/System/Email/TemplateController.php(109): Mage_Core_Controller_Varien_Action->renderLayout()
#28 /web/store/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Adminhtml_System_Email_TemplateController->editAction()
#29 /web/store/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('edit')
#30 /web/store/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#31 /web/store/app/code/core/Mage/Core/Model/App.php(365): Mage_Core_Controller_Varien_Front->dispatch()
#32 /web/store/app/Mage.php(684): Mage_Core_Model_App->run(Array)
#33 /web/store/index.php(135): Mage::run('', 'store')
#34 {main}

解码 store URL 变量似乎有问题

Zend_Json::decode('{"store url="""...')

当我检查数据库时,我发现它的保存方式与我在 Admin 中的保存方式不同。它不再有引号被转义,并且缺少一些斜线和其他格式更改。现在看起来像这样:

{"store url=""":"Store Url",
"var logo_url":"Email Logo Image Url",
"var logo_alt":"Email Logo Image Alt",
"htmlescape var=$order.getCustomerName()":"Customer Name",
"var store.getFrontendName()":"Store Name",
"store url="customer/account/"":"Customer Account Url",
"var order.increment_id":"Order Id",
"var order.getCreatedAtFormated('long')":"Order Created At (datetime)",
"var order.getBillingAddress().format('html')":"Billing Address",
"var payment_html":"Payment Details",
"var order.getShippingAddress().format('html')":"Shipping Address",
"var order.getShippingDescription()":"Shipping Description",
"layout handle="sales_email_order_items" order=$order":"Order Items Grid",
"var order.getEmailCustomerNote()":"Email Order Note"}

我直接在数据库中更改了它,然后我可以在管理员中再次打开模板,但是在我保存它之后,同样的事情发生了。我该怎么做才能让它在引号等前保留正斜杠?

这是 Magento 代码问题还是服务器/数据库编码问题?

谢谢!!

  • 服务器是用于静态内容的 Nginx
  • Apache2 用于动态。
  • AWS EC2 上的 Web 服务器
  • DB 是独立的服务器 AWS EC2
  • php 5.5.30
  • mysql 5.6.25
4

0 回答 0