2011-12-27 58 views
0

我想知道在我的GSP(Grails服務器頁面)或Groovy中完全等於php要求的命令。PHP require vs grails包括

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

+0

您能提供更多關於您期望在require中使用的require()嗎? – 2011-12-27 17:48:24

回答

1

一個確切等價實際上取決於什麼require()被用於PHP腳本的上下文。

PHP和Servlet環境的操作方式不同。在PHP中使用require()只需找到另一個PHP腳本並執行它。這種命令式操作並不適用於更多面向對象的Java/Grails/Servlet。

有幾個可能的等同物,這取決於你想實現什麼:

  • <g:include/>

    包括在另一個控制器/動作或視圖中的響應 電流響應

    例如

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

    這將做什麼是調用一個不同的控制器/操作,並將響應插入當前頁面。如果您的require()正在渲染某些標記,這將與PHP類似。

  • View templates

    如果你只是想包括幾個頁面標記的通用件,這些可能是你在找什麼。您可以創建模板視圖並使用<g:render/>將它們包含在您的GSP中。我懷疑這是你以後的事情,但請參閱下面的「更新」以獲取關於此的一些建議。

  • @page import

    例如

    <% @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,然後在需要標題的視圖中使用該佈局。

+0

感謝您的回覆! Grails使用sitemesh和wordpress使用不同的主題,只是讓我的手與grails變得骯髒,並尋找不同的選項來開始。我不喜歡將類導入到我的gsp中,因爲它不是一個好習慣。我將開始使用g:include,並且我需要一些靜態上下文或變量,我將用於控制器和其他域類。我想從cotrollers我可以獲得上下文,並從那裏我可以閱讀配置信息。 – springpress 2011-12-28 21:35:53

+0

@springpress - 我很高興我能幫上忙。根據我的理解,Wordpress的代碼庫並不是代表優雅和有組織的代碼的最佳例子。然而,這只是我剛纔談到的其他人的傳聞,所以請按照您的意見採取行動;也許從那以後就改變了。儘管如此,試圖從Grails中直接進行1:1的轉換可能最終會繞過Grails提供的大多數便利,因此請考慮這一點。 – 2011-12-28 21:53:56

0

也許你應該試試grails'模板'。

模板是的觀點,即可以使用的任何時間在任何視圖中的片段,這是爲了promove DRY ..

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

在這種情況下應該存在一個GSP稱爲_myTemplate.gsp並且在該模板正在處理兩個對象,如果你願意的話,你可以做一個只有內容和沒有處理對象的模板。

在上面的調用模板調用在視圖中與模板相同的文件夾,但你可以在其他文件夾中另一種觀點稱之爲:

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

而對於模板的名稱是模式相同...

檢查出來...