2

カスタムを作成しようとしていsrc/templates/scaffolding/Controller.groovyますが、コントローラー名にアクセスする方法があるかどうか疑問に思っていましたか?今のところ、「モデル」クラスしか取得できないようです。必要な理由は、コントローラーに基づいてテンプレートディレクトリのプレフィックスを付けるようにレンダリングをカスタマイズしているためです。

たとえば、という名前のコントローラーがあり、ディレクトリを使用するようAuthorAdminControllerにをカスタマイズする必要があります。list/admin/user/**

ご不明な点がございましたら、お気軽にお問い合わせください。カスタマイズする方法を検討する準備をしていますDefaultGrailsTemplateGeneratorが、それが正しいルートかどうかはわかりません。

例:

class UserAdminController {
      static scaffold = User 
}

現在、Controller.groovyclassName ='user'を取得しているため、コントローラーにアクセスできません。

4

1 に答える 1

3

スキャフォールディングが機能する方法では、テンプレートは常にDomainClassName Controllerという名前のクラス(つまりUserController、この例では)を生成し、新しいクラスローダーにロードされてから、実際のコントローラー(UserAdminController)のメタクラスが新しくなるため、できません。生成されたのインスタンスに委任するアクションが追加されましたUserController

これで、すべてのコントローラーがcontrollerNameアクションの実行中にプロパティにアクセスできるようになるため、回避策が提供される場合があります。私は試していませんがlog.info("controller: \${controllerName}")、テンプレートにを入れて、どの名前が付けられているかを確認することができます(生成時ではなく実行時に解決するためのバックスラッシュ)。

于 2013-02-20T17:48:58.550 に答える