2009-10-20 9 views
7

ZCML रूपzcml: condition के लिए मान्य शर्तें क्या हैं?

<configure zcml:condition="installed some.python.package"> 
    (conditional configuration directives) 
</configure> 

condition के लिए अभिव्यक्ति वाक्य रचना क्या है की सशर्त निर्देश शामिल कर सकते हैं? क्या 'या' अनुमति है?

उत्तर

13

मुझे हमेशा इसे भी देखना है। वाक्यविन्यास बहुत आसान है, और or सिंटैक्स का हिस्सा नहीं है, मुझे डर है।

आप the documentation in the zope.configuration source code से देख सकते हैं, वाक्य रचना प्रपत्र verb arguments, जहां क्रिया have, not-have, installed और not-installed में से एक है की हमेशा होता है।

have और not-have एक पंजीकृत सुविधा के लिए परीक्षण। एक पंजीकृत सुविधा बस एक अपारदर्शी स्ट्रिंग है जिसे <meta:provides feature="something" /> टैग के साथ पंजीकृत किया गया है। इसे ध्वजांकित करने के लिए इसका उपयोग करें कि किसी विशेष कार्यान्वयन के बिना इसे शामिल किए बिना कुछ शामिल किया गया है। उदाहरण:

<configure zcml:condition="have apidoc"> 
    <!-- only when the apidoc feature has been provided --> 
</configure> 

installed और not-installed बस नामित पैकेज आयात करने का प्रयास; अगर आयात सफल होता है तो installed परीक्षण होता है। उदाहरण:

<configure zcml:condition="installed sqlalchemy"> 
    <!-- only when the sqlalchemy module can be imported --> 
</configure> 
+1

मैंने एक घटक लिखा जो कि स्थापित होने के आधार पर क्रिप्टो फ़ंक्शन के कई कार्यान्वयन का उपयोग कर सकता है। मेरे 'या' के लिए मैं शायद एक ही <<मेटा सुविधा = "कुछ"> 'दो zcml में प्रदान कर सकता हूं: हालत ब्लॉक और फिर मेरे घटक को तीसरे स्थान पर पंजीकृत करें। धन्यवाद! – joeforker

+0

ज़ोप स्रोत कोड के आपके लिंक अब – scarba05

+0

@ scarba05 को तोड़ दिए गए हैं: हेड-अप के लिए धन्यवाद, लिंक को ठीक करें। –