国产gaysexchina男同gay,japanrcep老熟妇乱子伦视频,吃奶呻吟打开双腿做受动态图,成人色网站,国产av一区二区三区最新精品

  • <label id="gqpbu"></label>

    CodeSmith 使用主從代碼模板

    2018-10-12 13:55 更新

    使用主從代碼模板

    在前面的教程 CodeSmith 使用教程(3): 自動(dòng)生成 Yii Framework ActiveRecord 我們使用了主,從模板來實(shí)現(xiàn)了從數(shù)據(jù)庫(kù)為 Yii Framework 生成多個(gè)表的 ActiveRecord 類定義,中 CodeSmith 項(xiàng)目中通過主模板和從模板的配合可以實(shí)現(xiàn)復(fù)雜的代碼生成過程,主模板和從模板的關(guān)系有點(diǎn)類似主程序和子函數(shù)的關(guān)系。使用主-從模板的基本步驟如下:

    • 定義從模板,從模板可以定義屬性
    • 定義主模板,中主模板中如果要使用從模板,首先需要在主模板中注冊(cè)從模板,主模板中也也可以定義屬性,主模板和從模板中的屬性可以通過定義“合并”模式構(gòu)造最終模板所定義的屬性集合。
    • 調(diào)用主模板,設(shè)置主模板和從模板所需的屬性生成所需代碼

    注冊(cè)子模板

    <%@ Register Name="Header" Template="Header.cst"
      MergeProperties="True" ExcludeProperties="IncludeMeta" %>

    Name:子模板在主模板中的類型名稱,在主要模板中可以通過該類型創(chuàng)建子模板的實(shí)例 Template: 子模板文件名 MergeProperties: 是否需要把子模板中定義的屬性:“合并”到主模板中。缺省為 False ExcludeProperties: 如果子模板的屬性合并到主模板中時(shí)需要排除的屬性列表,以逗號(hào)分隔。

    子模板復(fù)制主模板中的屬性

    MergeProperties=”True” 可以把從模板中的屬性合并到主模板中,如果從模板需要引用主模板的屬性,比如主模板中定義了服務(wù)器地址,在多個(gè)子模板中都需要引用這個(gè)屬性,此時(shí)可以通過復(fù)制父模板屬性 CopyPropertiesTo 來實(shí)現(xiàn):

    // instantiate the sub-template
    Header header = this.Create<Header>();
    
    // copy all properties with matching name and type to the sub-template instance
    this.CopyPropertiesTo(header);

    CopyPropertiesTo 方法比較主模板中定義的屬性和子模板中定義的屬性,如果發(fā)現(xiàn)從模板中定義的屬性和主模板中定義的屬性名稱類型相同(匹配)則把主模板中屬性值復(fù)制到子模板中。

    設(shè)置子模板屬性

    在主模板中要?jiǎng)?chuàng)建子模板的實(shí)例,可以直接通過 Create 方法

    // instantiate the sub-template
    Header header = this.Create<Header>();
    
    // include the meta tag
    header.IncludeMeta = true;

    Create 中的 Header 為注冊(cè)子模板時(shí) Name 來定義的類型,通過 Create 創(chuàng)建子模板的實(shí)例后,就直接可以通過該實(shí)例的屬性來訪問子模板中的屬性,比如上面代碼中 IncludeMeta 為子模板中定義的一個(gè)屬性。

    從子模板輸出結(jié)果

    創(chuàng)建好子模板的實(shí)例,設(shè)置好子模板的屬性,在主模板中就可以讓子模板輸出結(jié)果,有幾種方法可以從子模板輸出內(nèi)容。

    第一種是把子模板生成的結(jié)果直接插入到主模板中

    // instantiate the sub-template.
    Header header = this.Create<Header>();
    // render the sub-template to the current output stream.
    header.Render(this.Response);

    第二種方法是把結(jié)果輸出到單獨(dú)的文件中:

    // instantiate the sub-template.
    Header header = this.Create<Header>();
    // render the sub-template to a separate file.
    header.RenderToFile("Somefile.txt");

    具體的例子可以參見 CodeSmith 使用教程(3): 自動(dòng)生成 Yii Framework ActiveRecord

    以上內(nèi)容是否對(duì)您有幫助:
    在線筆記
    App下載
    App下載

    掃描二維碼

    下載編程獅App

    公眾號(hào)
    微信公眾號(hào)

    編程獅公眾號(hào)