Разметки могут быть выбраны контроллерами Grails?

Я создаю CMS как упражнение изучения в Grails и хотел бы дать контент-менеджерам способность выбрать между различными структурами страницы HTML (например, 2 столбца, 3 столбца, и т.д.).

Разметки Grails походят на логический выбор, но для контроллера Grails действительно ли возможно явно назвать, какое расположение будет использоваться для рендеринга? Идеально был бы a layout опция к render метод, на Ruby on Rails, но я не вижу ничего как он.

Кажется, что это могло бы быть возможное использование applyLayout метод путем передачи названия расположения, но это требует, чтобы каждая страница GSP явно запросила расположение (раздражающие издержки на страницу) вместо того, чтобы использовать Расположение условно.

Какие-либо идеи?

5
задан maerics 7 April 2010 в 21:40
поделиться

3 ответа

Я не знаю способа сделать это для каждого действия, но вы можете указать это на уровне контроллера, например

class FooController {

   static layout = 'cms'

   def index = {}
   def foo = { ... }
   def bar = { ... }
}
3
ответ дан 13 December 2019 в 05:32
поделиться

Почему бы просто не передать его в модель и не отобразить в метатеге, определяющем макет?

<meta name="layout" content="${myValueFromController}"/>

Я не пробовал, но Я думаю, это сработает.

5
ответ дан 13 December 2019 в 05:32
поделиться

Эй, я думаю, у меня есть решение для вас: Просто используйте идею Теда Налейда в сочетании с afterInterceptor вашего контроллера:

foo.gsp:

<meta name="layout" content="${actionLayout}" />

FooController.groovy:

class FooController {

  def index = { 
    // do awesome stuff
  }

  def afterInterceptor = { model ->
    model.actionLayout = actionName}
  }
}

Единственное, что вам нужно сделать сейчас, это назвать ваши макеты, как ваши действия, или создать другую логику именования.

2
ответ дан 13 December 2019 в 05:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: