我编写了一个 cron 作业,它检查直接在数据库中进行的库存数量更改,因此绕过了 Magento 核心,该核心可以处理缓存过期。
我希望能够通过以下方式使用对象管理器:
public function clearCacheforProduct($productID) {
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$cacheManager = $objectManager->get('\Magento\Framework\App\Cache\Manager');
$cacheManager->clean('catalog_product_' . $productID);
}
Run Code Online (Sandbox Code Playgroud)
当前,当 cron 作业运行时,这会以静默方式失败。
知道如何清除单个产品 ID 的缓存吗?
提前感谢您的帮助!
我将基于 Magento 2 的站点从托管移至我的本地主机。我清除了缓存,在 core_config 中调整了(安全和不安全)url,使用 cli 运行静态内容部署()。检查“文件夹”的所有许可。
Magento 运行但没有 css 和 js 文件。
在控制台中,我可以看到以下内容:
请给一些建议,我应该怎么做才能消除这个问题?提前致谢!
PS:Win 10 Open Sever (PHP7x64, MySQL5,7x64, Apache-PHP7-x64+Nginx1.10) 无外部缓存
PPS 在从主机复制站点之前,我尝试使用 cli 使用示例数据设置 magento,但我收到了同样的问题!所以我相信这不仅仅是将 magento 2 从主机移动到本地的问题。我可以看到 M2 尝试从 pub/static 中不存在的 version1485628564 文件夹加载所有文件
http://magehost.two/pub/static/**version1485628564**/frontend/Magento/luma/en_US/mage/calendar.css
Run Code Online (Sandbox Code Playgroud) 我在结帐页面的“订单摘要”中添加了一个自定义块。它显示在两个步骤 - 运输和付款。但我需要知道当前的步骤是什么。我怎样才能在这个块上得到它?
如何以编程方式从产品信息中获取延期交货状态?
现在产品信息已准备好为$_product,我们也可以通过此代码获取库存状态。
<?php $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$StockState = $objectManager->get('\Magento\CatalogInventory\Api\StockStateInterface');
$product_is_stock = $StockState->getStockQty($_product->getId(), $_product->getStore()->getWebsiteId()); ?>
Run Code Online (Sandbox Code Playgroud)
此外,延期交货功能已解决,因此我们可以将缺货产品添加到购物车中。
我已经在我的服务器上安装了最新的 magento 2.1.7 版本并安装了一个主题。我已经在一个文件夹(http://example.com/site/)中安装了 magento,一切正常。现在我已将它移动到根目录(http://example.com/)作为主网站,但它不起作用,它重定向到带有 SID var 的旧 URL。http://example.com/site/?sid=8374urh347yr7w4ry
我尝试了以下更改:
magento 是否也将 base_url 存储在任何文件中?这样我就可以改变了。
任何帮助将不胜感激
这是情况。
我使用的是 magento 2.1.6 企业版。在 magento 文档中曾说过“Magento 使用 MySQL 数据库触发器来改善重新索引期间的数据库访问”。
但我的问题是如果我使用没有触发器的数据库会发生什么。因为我打算把数据库迁移到谷歌云SQL。在谷歌云文档中,他们说如果您要使用复制,请避免触发,因为它可能会导致副本不一致。
什么是最好的呢?
有人遇到过这个错误吗?
我正在尝试迁移自定义模块。
当我运行此命令时,出现以下错误。请指教。
php bin/migrate.php migrateModuleStructure source destination
Run Code Online (Sandbox Code Playgroud)
PHP Fatal error: Uncaught Error: Cannot instantiate interface Magento\Framework\Serialize\SerializerInterface in /var/www/code-migration-develop/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:50
Run Code Online (Sandbox Code Playgroud)
提前致谢。
我目前正在尝试将订单产品中的 SKU 放入后端的订单网格和过滤器中。它已经在工作,但仅适用于一个 SKU,而不是订单的所有 SKU。我的控制器看起来像这样:
<?php
namespace Vendor\Module\Model\ResourceModel\Order\Grid;
use Magento\Sales\Model\ResourceModel\Order\Grid\Collection as OriginalCollection;
use Magento\Framework\Data\Collection\Db\FetchStrategyInterface as FetchStrategy;
use Magento\Framework\Data\Collection\EntityFactoryInterface as EntityFactory;
use Magento\Framework\Event\ManagerInterface as EventManager;
use Psr\Log\LoggerInterface as Logger;
class Collection extends OriginalCollection
{
protected $_authSession;
public function __construct(
EntityFactory $entityFactory,
Logger $logger,
FetchStrategy $fetchStrategy,
EventManager $eventManager,
\Magento\Backend\Model\Auth\Session $authSession
)
{
$this->_authSession = $authSession;
parent::__construct($entityFactory, $logger, $fetchStrategy, $eventManager);
}
protected function _renderFiltersBefore() {
$user = $this->_authSession->getUser();
$joinTable = $this->getTable('sales_order_item');
$this->getSelect()->joinLeft($joinTable, 'main_table.entity_id = sales_order_item.order_id', ['sku'])->group('entity_id');
parent::_renderFiltersBefore();
}
}
Run Code Online (Sandbox Code Playgroud)
现在我的问题:是否可以将左连接中的数据选择为 group_concat?如果是这样,请给我一个关于如何做到这一点的提示。我试过这样
$this->getSelect()->joinLeft($joinTable, 'main_table.entity_id …Run Code Online (Sandbox Code Playgroud) 在 GraphQl Resolver 中,我们希望使用__()方法返回翻译后的字符串。不幸的是,这似乎不起作用。我们还进行了一些调试,但无法弄清楚为什么这不起作用。我的猜测是,解析器无法翻译,因为他们不知道翻译成哪种语言。但是我不知道如何设置语言。
有没有其他人遇到过这种问题,这在 PWA Studio 中是如何工作的?
magento2 ×10
php ×4
mysql ×2
caching ×1
checkout ×1
graphql ×1
installation ×1
javascript ×1
magento ×1
magento-2.3 ×1
status ×1
stock ×1
translation ×1