PHP требует против Grails включают - PullRequest
0 голосов
/ 27 декабря 2011

Я хотел знать команду, которая точно соответствует php require в моем GSP (страницы сервера Grails) или в Groovy.

Я знаю, что могу использовать <g:include/>, но хотел знать, есть ли какая-либо командакоторый будет выполнять php require в groovy / grails?

Ответы [ 2 ]

1 голос
/ 27 декабря 2011

Эквивалент точный действительно зависит от того, для чего require() используется в сценарии PHP.

Среды PHP и сервлетов работают по-разному.Использование require() в PHP просто находит другой скрипт PHP и выполняет его.Эта операция в императивном стиле не относится также к более объектно-ориентированным Java / Grails / Servlets.

Существует несколько возможных эквивалентов, в зависимости от того, что вы пытаетесь выполнить:

  • <g:include/>

    Включает ответ другого контроллера / действия или представления в текущий ответ

    Например,

    <g:include controller="foo" action="bar"/>
    

    . Это вызовет другой контроллер / действие и вставит ответ на текущую страницу.Это будет похоже на PHP, если ваш require() рендерил некоторую разметку.

  • Просмотр шаблонов :

    Есливы просто пытаетесь включить общие части разметки на несколько страниц, это может быть то, что вы ищете.Вы можете создавать шаблоны и использовать <g:render/>, чтобы включить их в свои GSP.Я подозреваю, что это то, что вам нужно, но см. Мое «Обновление» ниже для некоторых советов по этому поводу.

  • @page import

    например,

    <% @page import="com.example.mypackage.MyClass" %>
    

    Это сделает MyClass доступным для GSP, что было бы аналогично require(), если требование указывало некоторые библиотечные классы или функции, которые будут использоваться в других сценариях PHP.Однако использование этого в значительной степени кричит запах кода , поскольку почти все, для чего вы будете использовать это, будет более подходящим для действия контроллера или службы.

Обновление:

Видя ваш другой вопрос , я рискну, вы просто пытаетесь включить общий фрагмент GSP / HTML в несколько разных представлений, чтоof идет вразрез с тем, что Grails предоставляет вам с его макетами и шаблонами.

Если вы пытаетесь «потребовать», скажем, «blog-header.php» во всех ваших GSP, вы, скорее всего,Вы хотите просто включить содержимое заголовка в макет, например, grails-app/views/layouts/main.gsp, а затем использовать этот макет в представлениях, для которых требуется заголовок.

0 голосов
/ 28 декабря 2011

Может быть, вам стоит попробовать grails 'template'.

Шаблон - это фрагмент представления, который может быть использован в любое время в любом представлении, это означает, что DRY ..

<g:render template="myTemplate" model="['object1':object1,'object2':object2]" />

В этом случае должен существовать GSP с именем _myTemplate.gsp и в этом шаблоне, работающем с двумя объектами, вы можете создать шаблон только с содержимым и не обрабатывать объекты, если хотите.

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

<g:render template="other/myTemplate" model="['object1':object1,'object2':object2]" />

И шаблон для имени шаблона такой же ...

Проверьте это ...

...