首页>Magento>source

是否可以基于字段限制管理员用户? 例如,我希望一些用户编辑产品库存和简短说明,但我不希望他们能够更改产品名称和sku等字段

最新回答
  • 2019-12-5
    1 #

    我没有 完全功能的方式,但我可能有一个想法。
    如果你看一下 Mage_Adminhtml_Block_Catalog_Product_Edit_Tab_Attributes   class,在产品添加/编辑页面上呈现属性选项卡的类,您将在 _prepareForm中看到这一点   方法

          if (Mage::registry('product')->hasLockedAttributes()) {
                foreach (Mage::registry('product')->getLockedAttributes() as $attribute) {
                    $element = $form->getElement($attribute);
                    if ($element) {
                        $element->setReadonly(true, true);
                    }
                }
            }
    

    这意味着如果方法是 getLockedAttributes   从产品模型中返回一个带有属性代码的数组,它们将在表单中只读.这为您提供了客户端验证.

    同样的 getLockedAttributes   用于检查是否允许您为 Mage_Catalog_Model_Abstract::setData中的产品和类别的某些属性设置值 .这为您提供了服务器端验证.

    这意味着您可以在产品模型的加载方法 catalog_product_load_after上创建观察者   在哪里检索(从某个地方......我还不知道从哪里开始)受限属性代码列表将它们放在一个名为 $locked的数组中   然后将它们设置在产品型号上。
    像这样:

    public function catalogProductLoadAfter($observer) 
    {
        $locked = Magic happens here and you get from somewhere the list of attributes that the current user is not allowed to modify.
        $product = $observer->getProduct();
        foreach ($locked as $code) {
            $product->lockAttribute($code);
        }
        return $this;
    }
    

    现在是"神奇"的一部分。
    我的想法是有一个单独的管理部分,对于每个管理员,您可以指定某个管理员是否可以编辑属性。
    然后为当前管理员检索允许的属性列表。

相关问题

  • checkout:Magento如何在为客人下订单之前更新结算/发货订单
  • magento 1.9:如何获取图像类型,文件大小和网址?