2009-10-20 10 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からわかるように、構文は動詞がhaveの1、not-haveinstallednot-installedあるフォームverb arguments、常にあります。

haveおよびnot-have登録済み機能のテスト。登録された機能は、単に<meta:provides feature="something" />タグで登録された不透明な文字列です。これを使用して、特定の実装に束縛することなく、何かが含まれていることを示すことができます。例:

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

installednot-installed単に名前のパッケージをインポートしてみてください。インポートが成功した場合は、installedのテストも行います。例:

+1

私は、インストールされている暗号機能の複数の実装を使用できるコンポーネントを作成しました。私のために、おそらく2つのzcml:conditionブロックに同じ ''を置き、私のコンポーネントを3番目に登録することができます。ありがとう! – joeforker

+0

Zopeのソースコードへのリンクが壊れました – scarba05

+0

@ scarba05:ヘッドアップのおかげでリンクが修正されました。 –

関連する問題