2009-07-06 11 views
5

cfdirectory का उपयोग करते समय, मैं सभी cfm फ़ाइलों को कैसे बाहर निकाल सकता हूं और उन सभी फ़ाइलों के लिए फ़ाइल एक्सटेंशन निर्दिष्ट किए बिना अन्य सभी को सूचीबद्ध कर सकता हूं, या क्वेरी की क्वेरी किए बिना index.html जैसी विशिष्ट फ़ाइल को बहिष्कृत कर सकता हूं?क्या किसी भी तरह से cfdirectory के साथ फ़ाइलों को बाहर करना संभव है?

मैं निम्नलिखित की तरह कुछ ढूंढ रहा हूं, फ़िल्टर विशेषता को नोटिस करें।

<cfdirectory directory="#ExpandPath('./')#" action="list" name="qryFiles" filter="!index.html" sort="name ASC" listinfo="name"> 

या:

<cfdirectory directory="#ExpandPath('./')#" action="list" name="qryFiles" filter="!*.cfm" sort="name ASC" listinfo="name"> 
+2

आप क्यूओक्यू का उपयोग करने के विचार के खिलाफ क्यों हैं? यह एक बहुत शक्तिशाली उपकरण है। –

+0

मैं इसके खिलाफ नहीं हूं, मुझे बस आश्चर्य हुआ कि क्या कुछ अनियंत्रित फ़िल्टर उपहार थे जिन्हें मैं क्यूओक्यू या सीएफआईफ़ स्टेटमेंट लिखने के बजाय एक बयान में काम करने के लिए उपयोग कर सकता था। – Jayson

उत्तर

6

यदि आप बहिष्करण करने का प्रयास कर रहे हैं तो फ़िल्टर विशेषता बेकार है। मामले में मामला: बस कल मैं सभी उपनिर्देशिकाओं को पकड़ने के लिए cfdirectory का उपयोग करना चाहता था लेकिन EXLCUDE किसी भी निर्देशिका के साथ शुरू हुई "।" ताकि मैं ".svn" और ".git" जैसी चीज़ों को बहिष्कृत कर सकूं। कहने की जरूरत नहीं है कि मैंने पूरे स्थान पर खोज की और जवाब नहीं मिला।

अंत मैं बस अपना पाश में कुछ सशर्त तर्क का प्रयोग कर समाप्त हो गया में:

<cfloop query="mydir"> 
    <cfif left(name, 1) neq "."> 
    <!--- do some code ---> 
    </cfif> 
</cfloop> 

कौन सा काम किया गया। निस्संदेह मैं एक क्यूओक्यू का उपयोग कर सकता था, लेकिन मुझे उस ओवरहेड को जोड़ने के लिए उस अवधि को शुरू करने वाली निर्देशिकाओं को फ़िल्टर करने के लिए मूर्खतापूर्ण लग रहा था।

नीचे की रेखा यह है कि, हाँ, हम cfdirectory के साथ फ़िल्टरिंग बहिष्करण की बात करते समय खराब हो जाते हैं, लेकिन ऐसा कोई कारण नहीं है कि आप अपनी कल्पना का उपयोग न करें और परिणाम प्राप्त करने के लिए थोड़ी सी कोड का उपयोग न करें।

+0

यही समस्या है जिसे मैं डरता था।मैं उम्मीद कर रहा था कि मैं जो चाहता हूं उसे प्राप्त करने के लिए सभी प्रकार के सीएफआईफ़ या क्यूओक्यू कथन का उपयोग न करें। शायद एडोब को सीएफ 9 में हमारे लिए आश्चर्य होगा। मुझे आश्चर्य है कि क्या Railo या OpenBD के पास cfdirectory टैग के लिए बेहतर फ़िल्टर हैं? – Jayson

+0

हाँ यह सब अतिरिक्त तर्क जोड़ने के लिए बेकार है, लेकिन यदि आप इसे सब कुछ एक यूडीएफ में पैकेज करते हैं और अपने टेम्पलेट से कॉल करते हैं, तो जेल बलात्कार की भावना दूर हो जाती है O_o – rip747

+0

यही कारण है कि मैं QofQ का उपयोग करना पसंद करता हूं। आप कोड को यूडीएफ में लपेट सकते हैं जो कि आप वास्तव में CFDirectory से जो चाहते थे उसे वापस कर देता है। –

0

मैं बहुत यकीन है! ऑपरेटर फ़िल्टर पैरामीटर में काम नहीं करेगा।

मुझे क्वेरी की क्वेरी करने या cfoutput/cfloop के साथ क्वेरी के माध्यम से लूपिंग करने का तरीका नहीं दिख रहा है और फिर प्रत्येक फ़ाइल नाम के मूल्य को cfif/cfcase कथन के साथ जांचने के लिए यह देखने के लिए कि आप इसे चाहते हैं या नहीं आना।

6

नहीं, फाइलों को cfdirectory के साथ अकेले बाहर करना संभव नहीं है। फ़िल्टर विशेषता केवल डीओएस शैली वाइल्डकार्ड (* और ?) के साथ, कौन सी फाइलों को शामिल करने के लिए निर्दिष्ट करती है निर्दिष्ट करती है।

सीएफक्वरी के साथ तथ्य के बाद सबसे आसान समाधान संभवतः फ़िल्टर करना है।

<cfquery name="qryFiles" dbtype="query"> 
    SELECT * FROM qryFiles 
    WHERE name not like '%.cfm' 
</cfquery> 
1

यह .. के साथ एक जावा वस्तु में यह करने के लिए संभव हो सकता है

CreateObject("java", "java.io.File"); 

एक filename filter

निजी तौर पर ..और, मुझे लगता है कि आप बेहतर होगा सिर्फ एक क्वेरी का उपयोग होगा प्रश्नों का

+0

शायद यह है कि cfdirectory आंतरिक रूप से क्या उपयोग करता है। लेकिन मैं सहमत हूं कि क्यूओक्यू आसान विकल्प होगा। – Leigh

2

आप एक कस्टम टैग बना सकते हैं जो सीएफ निर्देशिका चलाता है, फिर परिणाम (जैसे आपके पास) एक नई क्वेरी या आपके परिणामों के साथ एक संरचना का निर्माण करता है। इससे अन्य स्थितियों में थोड़ा अधिक उपयोग करने योग्य होगा ।

+0

यह भी एक अच्छा विचार है। एक फ़ंक्शन जो पैरामीटर के रूप में फ़िल्टर लेता है और एक cfdirectory + QoQ करता है। – Jayson

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

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