2010-09-07 11 views
9

पर फ़िल्टर फ़ील्ड अक्षम करें मेरे पास बैकएंड पेज के साथ एक कस्टम मॉड्यूल है। ग्रिड में, मैं ग्राहक ईमेल को उपयोगकर्ता नाम के रूप में दिखाता हूं। डिफ़ॉल्ट रूप से, Magento ग्रिड में प्रत्येक कॉलम में एक फ़िल्टर जोड़ता है। अब, जब मैं ग्राहक के ईमेल द्वारा फ़िल्टर करने का प्रयास करता हूं, तो मुझे यह अपवाद मिलता है कि मेरी कस्टम तालिका में ईमेल कॉलम नहीं है। Magento मेरी कस्टम टेबल में खोजने की कोशिश कर रहा है। मैं इस समस्या को कैसे ठीक कर सकता हूं, या मैं उस कॉलम के क्षेत्र को कैसे हटा सकता हूं ताकि व्यवस्थापक उस फ़ील्ड द्वारा फ़िल्टर नहीं कर सके। धन्यवाद।Magento Admin Grid

उत्तर

33

के लिए इसे बदल

'filter' => false 
स्तंभ आप जैसे एप्लिकेशन/कोड/कोर/दाना/आदमी ग्रिड दृश्य में (से फ़िल्टर निकालना चाहते करने के लिए

nhtml/ब्लॉक/बिक्री/आदेश/Grid.php)

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

मुझे लगता है कि आप का मतलब

यदि हां, तो मैं आपको बता सकता है कि कैसे ईमेल क्षेत्र को दूर करने के लिए "कैसे मैं इतना है कि व्यवस्थापक 'टी फिल्टर है कि क्षेत्र से कर सकते हैं कि स्तंभ के क्षेत्र निकाल सकते हैं"।

ओपन /app/code/local/Namespace/Module/Block/Adminthml/Module/Grid.php

संरक्षित समारोह _prepareColumns में कहीं() आप की तरह कुछ खोजना चाहिए:

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

बस इस लाइन पर टिप्पणी करें।

और देखना है कि, पूरी कक्षा के बहुत शुरुआत में __construct विधि में, आप

$this->setDefaultSort('email'); 

यदि ऐसा है तो नहीं है, विकल्प जोड़ें

$this->setDefaultSort('id'); // if you have an id field in your module. 
+0

ठीक है, मैं कॉलम दिखाना चाहता हूं, लेकिन कॉलम के शीर्ष में फ़ील्ड को हटा दूं, मैं यह कैसे कर सकता हूं? –

+1

यदि मैं ऐसा करता हूं, तो मैं कॉलम को हटा देता हूं, मैं कॉलम को हटाना नहीं चाहता, बस इसके शीर्ष पर फ़ील्ड, जिसे फ़िल्टर करने के लिए उपयोग किया जाता है –

0

आप अपने कस्टम तालिका में एक ई-मेल स्तंभ नहीं है, तो, तो मैं तुम्हें एक कोर करने के लिए अपने कस्टम तालिका में शामिल होने से अपने ग्रिड बना रहे हैं मान तालिका जिसमें उपयोगकर्ता ईमेल पता शामिल है, जैसे customer_entity

जब आप किसी कॉलम पर फ़िल्टर करते हैं, तो Magento कहां से उत्पन्न करने के लिए कॉलम अनुक्रमणिका का उपयोग करता है। जो आपके मामले में WHERE email LIKE '%filter value%' जैसा कुछ देगा, लेकिन यह आपकी कस्टम तालिका में ईमेल नहीं ढूंढ पाएगा।

आप filter_index का उपयोग कर इसे ठीक करने के लिए सक्षम हो सकते हैं ताकि स्पष्ट रूप से Magento को बताया जा सके कि कौन सी तालिका और कॉलम का उपयोग क्लॉज के निर्माण के दौरान किया जाए। इस

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

जहां core_table तालिका आप के साथ शामिल हो रहे हैं है की तरह कुछ की कोशिश करो।