【问题标题】:Magento - Get store id before product create observerMagento - 在产品创建观察者之前获取商店 ID
【发布时间】:2014-05-27 08:59:29
【问题描述】:

我想根据catalog_product_save_before观察者中的当前商店ID向产品添加一些网站。

观察者工作正常,但我似乎无法获取创建产品的当前商店 ID。这是我尝试过的:

Mage::app()->getStore()->getId();

返回 0。

Magento 将管理面板视为一个单独的商店,名称为 admin 和 id 0。因此,它返回 admin 的商店 id,这不是我想要的。

所以,我在here 中尝试了一些东西,它仍然返回 id 为 0。

更多详情:

我已经以商店管理员身份登录到 enterprise.lmm.dev(企业网站的虚拟主机)并正在创建产品。在这里,网站名称和商店名称都是“企业”。

创建产品时,我从“选择商店视图”下拉菜单中选择“企业”并填写产品创建表单。

我写了一个观察者函数'before_product_save()',这就是我所做的:

echo Mage::app()->getStore()->getStoreId();

但是,这是返回 0。

我想知道这是否可行,我是否可以访问商店“企业”的商店 ID。

谢谢。

【问题讨论】:

  • 我想我不明白你想要达到什么目的。你能详细说明一下吗?尤其是“创建产品的当前商店 ID”是什么意思?

标签: php magento


【解决方案1】:

此时产品对象中的store_id 已设置为您为其保存当前值的商店的ID。

所以假设,$product 是你的产品对象,你可以使用这个:

$product->getStoreId()

或者如果您需要商店模型:

Mage::app()->getStore($product->getStoreId());

【讨论】:

  • 我已经试过了。这也给出了相同的值 - 0。
  • 当我打印$product->getData()时,其中显示store_id为0,但网站id为4。问题是当前网站中有多个商店,所以我无法确定当前网站上的当前商店。
  • 这里的website_ids和store_id的区别是:website_ids是一个实际的产品属性,指定产品属于哪些网站。商店没有这样的东西,不同于 0 的 store_id 仅表示“保存此商店 id 的值”,即您已从左上角的范围切换器中选择了商店。
【解决方案2】:

试试:

Mage::app()->getStore()->getStoreId();

【讨论】:

  • 这也返回 0。
  • Mage::app()->getStore()->getName() 你能得到什么?
  • 他必须在 admin 中访问代码,因此除非发布/获取商店 ID,否则上述方法将不起作用
  • 从管理员那里更改商店,然后尝试获取商店ID。
  • @AlbinGeorge,我的意思是当您在目录网格部分时,在网格顶部看到一个下拉菜单,使用该下拉菜单更改商店
【解决方案3】:

如果Mage::app()->getStore()->getStoreId() 不起作用,请尝试$this->helper('core')->getStoreId()Mage::helper('core')->getStoreId()

【讨论】:

  • 在此处粘贴您的代码,以便我检查确切的问题
  • 这是我在观察者函数中的代码:echo Mage::app()->getStore()->getId(); die();,这会打印 0。
猜你喜欢
  • 1970-01-01
  • 2020-12-15
  • 1970-01-01
  • 2014-07-15
  • 2023-03-31
  • 2013-03-23
  • 1970-01-01
  • 1970-01-01
  • 2011-07-11
相关资源
最近更新 更多