2013-02-20 3 views
2

Я пытаюсь написать пользовательский src/templates/scaffolding/Controller.groovy и задавался вопросом, есть ли способ получить доступ к имени контроллера? Сейчас кажется, что вы можете получить только «модельный» класс. Причина, в которой я нуждаюсь, - это настроить рендер для префикса каталога шаблонов на основе контроллера.Grails Custom Scaffolding получить доступ к имени контроллера

Например, у меня есть контроллер с именем AuthorAdminController, и мне нужно настроить list, чтобы использовать каталог /admin/user/**.

Дайте мне знать, если возникнут какие-либо вопросы. Я собираюсь изучить, как настроить DefaultGrailsTemplateGenerator, но я не уверен, что это правильный маршрут.

Пример:

class UserAdminController { 
     static scaffold = User 
} 

В настоящее время в моем Controller.groovy я получаю имя класса = «пользователь», поэтому у меня нет доступа к контроллеру.

ответ

3

Я не думаю, что вы можете, как способ подмости работают ваш шаблон будет всегда порождающим класс с именем DomainClassName Controller (т.е. UserController в вашем примере), который загружается в новый загрузчик классов и затем метакласс реального контроллера (UserAdminController) добавляет к нему новые действия, которые делегируют экземпляр сгенерированного UserController.

Теперь каждый контроллер имеет доступ к свойству controllerName во время выполнения действий, поэтому это может предоставить вам обходной путь. Я не пробовал, но вы можете попробовать разместить log.info("controller: \${controllerName}") в шаблоне и посмотреть, какое имя он вам дает (обратная косая черта, чтобы он разрешался во время выполнения, а не времени генерации).