2014-09-18 10 views
5

में कौन से कॉलम खोजे जाते हैं सोनाटा एडमिन में वैश्विक खोज विकल्प उन सभी (doctrine2) इकाइयों को खोजता है जिनमें उनके साथ संबद्ध व्यवस्थापक वर्ग होते हैं।सोनाटा-एडमिन ग्लोबल सेरच

जो मैं समझने की कोशिश कर रहा हूं वह यह है कि वैश्विक खोज द्वारा कौन से कॉलम खोजे जाते हैं। मेरे ग्राहकों की वेबसाइट में यह सभी VARCHAR फ़ील्ड्स (सिद्धांत प्रकार: स्ट्रिंग) को खोजना प्रतीत होता है और टेक्स्ट फ़ील्ड (सिद्धांत प्रकार: टेक्स्ट) नहीं।

क्या कोई जानता है कि यह क्यों है, और यह कैसे बदला जा सकता है?

उत्तर

4

सोनाटा व्यवस्थापक के दस्तावेज़ के अनुसार उन्होंने उल्लेख किया है कि वैश्विक खोज मॉड्यूल सभी दृश्य व्यवस्थापक के लिए खोज show_in_dashboard यानी सही पर सेट है जाएगा, और यह केवल उन क्षेत्रों जो कॉन्फ़िगर व्यवस्थापक के configureDatagridFilters() केवल समारोह में हैं में खोज करेंगे, तो खेतों जोड़ा $datagridMapper सोनाटा व्यवस्थापक की वैश्विक खोज में व्यवस्थापक वर्ग की वस्तु की खोज की जाएगी।

उदाहरण के लिए आप खबर व्यवस्थापक है और configureListFields() में आप 3 क्षेत्रों

protected function configureListFields(ListMapper $listMapper) 
{ 
    $listMapper 
     ->addIdentifier('id') 
     ->add('name') 
     ->add('createdDate'); 
} 

और configureDatagridFilters() आप परिणामों का

फिल्टर करने के लिए केवल नाम फ़ील्ड है
protected function configureDatagridFilters(DatagridMapper $datagridMapper) 
{ 
    $datagridMapper->add('name'); 
} 

तो सोनाटा केवल नाम के क्षेत्र में खोज करेंगे आपके समाचार व्यवस्थापक के कारण से आपने इस व्यवस्थापक के लिए फ़िल्टर कॉन्फ़िगर किया है, इसलिए इस फ़िल्टर का उपयोग व्यवस्थापक के लिए वैश्विक खोज में भी किया जाता है और नाम फ़ील्ड को छोड़कर कोई अन्य फ़ील्ड नहीं खोजेगा


डॉक्स के अनुसार

"वैश्विक खोज" अंत उपयोगकर्ता डैशबोर्ड में दिखाई देने वाले सभी व्यवस्थापक से अधिक पुनरावृति और कीवर्ड के लिए खोज करने के लिए अनुमति देता है। वर्तमान कार्यान्वयन बहुत आसान है, स्ट्रिंग से संबंधित प्रत्येक फ़िल्टर डिफ़ॉल्ट रूप से खोजने योग्य होगा।

ADMIN BUNDLE ~ GLOBAL SEARCH


अन्य जानकारी सोनाटा वैश्विक खोज के बारे में

व्यवस्थापक वर्गों से अधिक खोज दोहराता है और सही पर सेट किया global_search विकल्प के साथ फिल्टर के लिए देखो। यदि आप सोनाटाडॉक्ट्रिनोरंबंडल का उपयोग कर रहे हैं तो कोई भी टेक्स्ट फ़िल्टर डिफ़ॉल्ट पर सत्य पर सेट हो जाएगा। यदि स्ट्रिंग पर सेट

डिफ़ॉल्ट सोनाटा तक क्षेत्र के वर्णन के लिए लग रहा है यह स्वचालित रूप से वैश्विक खोज आप भी क्षेत्र मजबूर कर सकते हैं में शामिल की तरह $datagridMapper के add() में फ़ील्ड विकल्प की स्थापना द्वारा खोज में इस्तेमाल किया जा करने के लिए नीचे

->add('name', null, array('global_search' => true), null, array() 

Sonata Search

+0

आपके त्वरित और विस्तृत उत्तर एम खालिद जुनैद के लिए धन्यवाद, यह मेरी मदद नहीं करता है (अभी तक), क्योंकि ऐसा लगता है कि सोनाटा खोज करने के लिए कॉलम के बारे में अधिक जानने के लिए और अधिक उपयोग करता है। मैं सोनाटा में टिप्पणी इकाई टिप्पणी क्षेत्र में खोज करना चाहते हैं, और मैं CommentAdmin में dataGridFilters को इस क्षेत्र को शामिल किया है: 'संरक्षित समारोह configureDatagridFilters (DatagridMapper $ datagridMapper) { $ datagridMapper -> जोड़ने (' उपयोगकर्ता) -> जोड़ने ('टिप्पणी') ' मेरे परिणाम में, तथापि, मैं बस सभी टिप्पणियां (कोई फ़िल्टरिंग प्राप्त) – vitrus

+0

@vitrus मेरी अद्यतन जवाब आशा देखें कि यह आपकी समस्या –

+0

एम खालिद Jnaid हल करती है, आपका जवाब मुझे सही दिशा में मदद मिली, मुझे यह निम्नलिखित पंक्ति के साथ काम कर रहा है: '-> जोड़ें ('टिप्पणी', शून्य, सरणी ('global_search' => tru ई), शून्य, सरणी()) ' (इसलिए" विकल्प "शायद पांचवें के बजाय तीसरा तर्क है)। क्या आप अपना उत्तर अपडेट कर सकते हैं ताकि मैं इसे स्वीकृति दे सकूं (इसलिए अन्य लोगों के पास इस विषय का उपयोग हो सकता है)। – vitrus

संबंधित मुद्दे