代码之家  ›  专栏  ›  技术社区  ›  Castro Roy

Magento将筛选器字段禁用到管理网格

  •  10
  • Castro Roy  · 技术社区  · 14 年前

    谢谢。

    3 回复  |  直到 8 年前
        1
  •  38
  •   Community Egal    12 年前

    添加选项

        'filter' => false
    

        $this->addColumn('email', array(
           'header'    => Mage::helper('module')->__('Email'),
           'align'     =>'left',
           'index'     => 'email',
           'filter' => false,
       ));
    
        2
  •  1
  •   Hervé Guétin    14 年前

    我猜你的意思是“如何删除该列的字段以便管理员无法 t型 “按该字段筛选”

    如果是这样,我可以告诉你如何删除电子邮件字段。

    打开/app/code/local/Namespace/Module/Block/adminthl/Module/网格.php

      $this->addColumn('email', array(
          'header'    => Mage::helper('module')->__('Email'),
          'align'     =>'left',
          'index'     => 'email',
      ));
    

    注意,在整个类最开始的\uu construct方法中,您没有

      $this->setDefaultSort('email');
    

    如果是,请将其更改为

    $this->setDefaultSort('id'); // if you have an id field in your module.
    
        3
  •  0
  •   Dom    8 年前

    如果您的自定义表中没有电子邮件列,那么我假设您是通过将自定义表连接到包含用户电子邮件地址的核心表来创建网格的,例如 customer_entity .

    对列进行筛选时,Magento使用列索引生成where子句。在你的情况下 WHERE email LIKE '%filter value%' ,但它不会在您的自定义表中找到电子邮件。

    您可以使用 filter_index 显式告诉Magento在构建where子句时要使用哪个表和列。试试这个

    $this->addColumn('email', array(
        'header'    => Mage::helper('module')->__('Email'),
        'index'     => 'email',
        'filter_index'          => 'core_table.email',
    ));
    

    哪里 core_table