2010-12-13 1 views
1

ウェブアプリケーションをpylonsからpyramid(正式にはrepoze.bfg)に移動することを検討しています。ピラミッドトラバーサルのビュープレフィックスを "@@"から "+"に変更

現在、ビューの数が多いobjがある場合、URLに「+」が付いたビュー名があります。例えば:

/path/to/obj/ (default view) 
/path/to/obj/+custom_view1 
/path/to/obj/+custom_view2 
/path/to/obj/+edit 
/path/to/obj/+delete 
/path/to/obj/sub_obj/ 

「@@」ピラミッドは、これを処理する機能は良い方法であり、それは接頭辞を使用しています。これを "+"に変更して、自分のURLを同じに保つことができます(あなたはクールなURLについて何を言っているのか知っています)。

+0

これは「ピラミッド」とタグ付けする必要がありますが、新しいもので、十分な担当者がいません。 –

+0

+は通常、新しいオブジェクト/アイテムを作成するフォームに使用されるので、混乱を招く可能性があるので、これに対してお勧めします。それは@@(2つのグーググイの目、それは見て、見て?ハハ)はどちらか一番美しいかもしれないが、私はそれを変更する方法を知らない。 Btw、ピラミッドで@@を使用する必要がありますか? Zopeでは、サブオブジェクトと名前の衝突がある場合にのみ@@が必要です。 –

+0

+が必要な場合は、単純にビュー名の一部にしないでください。 'config.add_view(name = '+ edit')'? – joeforker

答えて

3

はいといいえ、表示プレフィックスを "@@"から変更できますが、新しいプレフィックスは2シンボル長でなければなりません。トラバーサの場合はsourcesを参照してください。

トリックを行う必要があり、デフォルトの1の代わりにそれを登録し、その後ResourceTreeTraverserをサブクラス化して:

from pyramid.traversal import ResourceTreeTraverser as BaseResourceTreeTraverser 

class ResourceTreeTraverser(BaseResourceTreeTraverser): 
    VIEW_SELECTOR = "++" 

from pyramid.config import Configurator 
from pyramid.interfaces import ITraverser 
from zope.interface import Interface 

config = Configurator() 
config.registry.registerAdapter(ResourceTreeTraverser, (Interface,), ITraverser) 

は個人的に、私はVIEW_SELECTORは、任意の長さのビュー接頭辞を許可するようにリファクタリングするべきだと思います。

+1

ありがとう。私はそのコードを見ていましたが、どのようにカスタムITraverserを登録するのかを考えることができませんでした。 ビューセレクタを任意の長さにするためのプルリクエストを提出しました。 https://github.com/Pylons/pyramid/pull/99 –

関連する問題