2011-05-31 24 views
2

我正在使用Perl的Catalyst框架開發應用程序。 在試圖讓我的模型中的表現邏輯不存在的時候,我正在尋找一種方式在VIEW(模板工具包)中從給定的數據結構生成HTML表格。 我目前使用HTML :: Table :: FromDatabase從SQL查詢 生成我的HTML表,但目前在模型中。我期待將表示邏輯隔離到View而不是模型中。 有關這方面的任何建議將有所幫助如何在模板工具包中輕鬆創建表View in perl/Catalyst

回答

1

好的CGI.pm使這不是太困難,但要得到任何真正的幫助,你將不得不顯示你的數據結構是什麼樣子。

一個潛在的問題是,你的數據可能在散列中,它們本質上不提供列順序(儘管數據庫純粹主義者會告訴你HTML :: Table :: FromDatabase對於鼓勵select *是邪惡和壞的,並假設列順序是有意義的)。

HTML :: Table :: FromDatabase本身使用HTML :: Table;你可能會看到如果這符合你的需求。

+0

嗯,是公平的,查詢被執行用戶可以很容易地使用'SELECT col1,col2,...'而不僅僅是'SELECT *'來定義順序。顧名思義,HTML :: Table :: FromDatabase將查詢結果轉換爲HTML表格。在文檔中的例子確實將'SELECT *'作爲一個簡單的例子來說明 - 雖然可以,但我可以改變它以保持純粹主義者的快樂:) – 2011-10-10 16:23:03

1

我將數據結構(作爲散列數組)傳遞給TT,並使用TT邏輯構建表,使用CSS類來控制表的外觀。模板的

簡單的例子:

<table class="ixTable"> 
    [% FOREACH listing = listings %] 
    <tr class="ixRow"> 
     <td class="ixAddress">[% listing.address %]</a></td> 
     <td class="ixPrice">[% listing.listprice %]</td> 
     <td class="ixSqFt">[% listing.sqft %]</td> 
    </tr> 
    [% END %] 
    </table> 
+0

謝謝比爾我使用了你展示的格式。真正引發這個問題的是,對於我的webApp,我使用HTML :: Dashboard和HTML :: Table :: FromDatabase從sql查詢生成表。然而這個邏輯在模型中。爲了與純MVC設計保持一致,我試圖將表示邏輯從我的域模型中分離出來,並將視圖(TT)中生成的表從存儲在存儲(數組的參考數組)中的數據結構中生成。我正在尋找一種在TT中使用HTML :: Dashboard或其他HTML工具的方法。 (希望有道理) – 2011-06-03 06:00:59

3

這是記憶,只是riffing所以認爲這是未經測試。這是自動遍歷列和記錄的簡單方法。

假設子像這樣基於一個DBIx ::類模型 -

sub some_action : Local Args(0) { 
    my ($self, $c) = @_; 
    my $rs = $c->model("SomeTable")->search({},{rows => 10}); 
    $c->stash(some_rs => $rs); 
} 

然後匹配模板 -

[% records = some_rs.all %] 
[% RETURN UNLESS records.size %] 
[% columns = records.0.columns %] 
<table> 
    <tr> 
    [% FOR column IN columns %] 
    <th>[% column | ucfirst | html %]</th> 
    [% END %] 
    </tr> 

    [% FOR item IN records %] 
    <tr> 
    [% FOR column IN columns %] 
     <td>[% item.${column} | html %]</td> 
    [% END %] 
    </tr> 
    [% END %] 
</table> 
+1

謝謝阿什利。真正引發這個問題的是,對於我的webApp,我使用HTML :: Dashboard和HTML :: Table :: FromDatabase從sql查詢生成表。然而這個邏輯在模型中。爲了與純MVC設計保持一致,我試圖將表示邏輯從我的域模型中分離出來,並將視圖(TT)中生成的表從存儲在存儲(數組的參考數組)中的數據結構中生成。我正在尋找一種在TT中使用HTML :: Dashboard或其他HTML工具的方法。 (希望是有道理的) – 2011-06-03 06:03:16

相關問題