PHP要求与grails包括

时间:2011-12-27 17:09:13

标签: php grails groovy require

我想知道在我的GSP(Grails服务器页面)或Groovy中完全等于php require的命令。

我知道我可以使用<g:include/>但是想知道是否有任何命令可以满足常规/ grails中的php要求?

2 个答案:

答案 0 :(得分:1)

完全等价物实际上取决于PHP脚本中require()的使用情况。

PHP和Servlet环境的运行方式不同。在PHP中使用require()只需找到另一个PHP脚本并执行它。命令式样操作不适用于面向对象的Java / Grails / Servlet。

根据您要完成的任务,有几种可能的等价物:

  • <强> <g:include/>

      

    包含另一个控制器/操作或视图的响应   目前的回应

    e.g。

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

    这样做会调用不同的控制器/操作并将响应插入当前页面。如果您的require()正在呈现某些标记,这将类似于PHP。

  • <强> View templates

    如果你只想在几个页面中包含常见的标记,那么这些可能就是你要找的东西。您可以创建模板视图,并使用<g:render/>将其包含在GSP中。我怀疑这就是你所追求的,但请参阅下面的“更新”,了解一些有关此问题的建议。

  • <强> @page import

    e.g。

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

    这将使MyClass可用于GSP,如果要求指定某些库类或要在其他PHP脚本中使用的函数,则类似于require()。但是,使用这个非常尖叫代码味道,因为几乎任何你使用它的东西都更适合控制器动作或服务。

<强>更新

看到你的other question,我冒昧地试图在几个不同的视图中包含一个共同的GSP / HTML,这与Grails为其提供的布局和模板有所不同。

如果你想在所有GSP中“需要”,比如“blog-header.php”,你更可能只想在一个布局中包含标题的内容,例如grails-app/views/layouts/main.gsp,然后在需要标题的视图中使用该布局。

答案 1 :(得分:0)

也许你应该尝试grails'template'。

模板是一个视图片段,可以在任何视图中随时使用,这是为了推广DRY ..

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

在这种情况下,应该存在一个名为_myTemplate.gsp的GSP,并且在此模板中使用两个对象,如果您愿意,可以只使用内容而不处理对象的模板。

在上面的调用中,模板在与模板相同的文件夹中的视图中调用,但您可以从其他文件夹中的另一个视图调用它:

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

模板名称的模式是相同的......

检查出来......