首先:我了解如何在后端的自定义文件中创建自定义模块。我已经完成了这个并且它工作正常,我可以在后端保存一些信息。 (名称:app / code / TestModule / Module)
但现在我尝试自定义订单流程。 我想保存一些数据,比如' oder_id'和' order_date'在自定义表格中。
订单成功后,此流程应自动生效。
问题: 我不明白如何将这些信息存储在自定义表格中。
我在 success.phtml 中有这个用于检查前端数据的内容:
<?php
$block->getOrderId()
$block->getShippingMethod()
?>
使用函数调用数据,在 Block / Onepage / Success.php
中...
public function getShippingMethod()
{
return $this->_checkoutSession->getLastRealOrder()->getShippingMethod();
}
...
好吧,现在我对接下来的步骤没有任何想法。例如:我在这里看到了这个啧啧In magento 2 what is the correct way for getModel?,但它对我没有帮助。
有关stackflow的其他问题仅回答如何构建模块或如何显示订单信息。
我想我必须做这样的事情:
$this->_Modulename->addData($data);
$this->_transaction->save();
但是经过3天的阅读,我在这里试试运气。 我不需要最终的解决方案,我不想复制并粘贴答案代码,我只想了解这是如何在成功之后将数据保存在自定义tabele中#34;的工作原理。
我从你们那里拿走了所有东西,因为我知道这一切。
TYIA
答案 0 :(得分:0)
好的,我现在有了。
某些功能,例如&#34; order-id&#34;在:
应用程序/代码/模块/ MODULENAME / 阻止/ Onepage / Success.php 强>
<?php
namespace Modules\Modulename\Block\Onepage;
class Success extends \Magento\Checkout\Block\Onepage\Success
{
public function getEntityId()
{
return $this->_checkoutSession->getLastRealOrder()->getEntityId();
}
}
以下save-function
位于一个文件中:app/code/Modules/Modulename/view/frontend/templates/succes.phtml
// get order-id (the EntityId) ###
$order_id = $block->getEntityId();
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$resource = $objectManager->get('Magento\Framework\App\ResourceConnection');
创建连接数据库
$connection = $resource->getConnection();
创建查询并从数据库中获取数据:
$tableName = $resource->getTableName('sales_order_item');
$sql = "Select * FROM ". $tableName. " WHERE order_id =". $order_id;
$result = $connection->fetchAll($sql);
现在我们用 foreach 来获取它们。 &#34; $ n&#34;是所有产品的计数和&#34; $ productQty&#34;是每个产品数量。 示例:
有序:
2 x红球
1 x绿瓶
所以你必须计算所有产品(2(瓶子和球))和每个产品数量(2x球,1x瓶)。我希望很清楚我的意思;)
// do this for all products (in my case 2 times)
$n = 0;
foreach ($result as $allOptionkey) {
$allOptionkey = array(unserialize($result[$n]['product_options']));
$productTitle = $result[$n]['name'];
foreach ($allOptionkey as $keys) {
$product = $keys['info_buyRequest'];
$options = $keys['options'];
$productKeyArray = array('0' => $product);
foreach ($productKeyArray as $productKey => $productVar) {
$productName = $productVar['product'];
// get "product qty"
$productQty = $productVar['qty'];
}
}
$qn=0;
$n++;
// do this for each product qty (im my case 2x ball and 1 bottle)
while($productQty > $qn) {
$qncounter = $qn++;
$tableModulename = $resource->getTableName('table_name');
$sqlInsert = "Insert Into ".$tableModulename." (options,email) Values ( '".$productTitle."', '".$email."')";
$connection->query($sqlInsert);
}
}
我构建了这个&#34; save-function&#34;将每个订购的产品保存在自定义表格中。