我正在使用Perl的Catalyst框架開發應用程序。 在試圖讓我的模型中的表現邏輯不存在的時候,我正在尋找一種方式在VIEW(模板工具包)中從給定的數據結構生成HTML表格。 我目前使用HTML :: Table :: FromDatabase從SQL查詢 生成我的HTML表,但目前在模型中。我期待將表示邏輯隔離到View而不是模型中。 有關這方面的任何建議將有所幫助如何在模板工具包中輕鬆創建表View in perl/Catalyst
回答
好的CGI.pm使這不是太困難,但要得到任何真正的幫助,你將不得不顯示你的數據結構是什麼樣子。
一個潛在的問題是,你的數據可能在散列中,它們本質上不提供列順序(儘管數據庫純粹主義者會告訴你HTML :: Table :: FromDatabase對於鼓勵select *
是邪惡和壞的,並假設列順序是有意義的)。
HTML :: Table :: FromDatabase本身使用HTML :: Table;你可能會看到如果這符合你的需求。
我將數據結構(作爲散列數組)傳遞給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>
謝謝比爾我使用了你展示的格式。真正引發這個問題的是,對於我的webApp,我使用HTML :: Dashboard和HTML :: Table :: FromDatabase從sql查詢生成表。然而這個邏輯在模型中。爲了與純MVC設計保持一致,我試圖將表示邏輯從我的域模型中分離出來,並將視圖(TT)中生成的表從存儲在存儲(數組的參考數組)中的數據結構中生成。我正在尋找一種在TT中使用HTML :: Dashboard或其他HTML工具的方法。 (希望有道理) – 2011-06-03 06:00:59
這是記憶,只是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>
謝謝阿什利。真正引發這個問題的是,對於我的webApp,我使用HTML :: Dashboard和HTML :: Table :: FromDatabase從sql查詢生成表。然而這個邏輯在模型中。爲了與純MVC設計保持一致,我試圖將表示邏輯從我的域模型中分離出來,並將視圖(TT)中生成的表從存儲在存儲(數組的參考數組)中的數據結構中生成。我正在尋找一種在TT中使用HTML :: Dashboard或其他HTML工具的方法。 (希望是有道理的) – 2011-06-03 06:03:16
- 1. 通過模板輕鬆創建wxPython首選項對話框的工具?
- 2. 如何輕鬆地在Eclipse中創建模型/ UML?
- 3. 如何爲ViewModel和View創建模板?
- 4. 如何輕鬆創建xml架構
- 5. 如何輕鬆創建這個矩陣?
- 6. 輕鬆(GUI?)創建自定義VS項目模板?
- 7. 輕鬆創建圖像映射的工具
- 8. 如何包含模板::工具包 - 宏?
- 9. 如何在HTML中輕鬆插入工具提示?
- 10. 如何在模板工具包模板文件中覆蓋WRAPPER?
- 11. 如何輕鬆創建自定義asp.net Web窗體控件的模板?
- 12. 如何在R中輕鬆創建示波器變量
- 13. 如何在iOS中輕鬆創建動畫?
- 14. 如何從模板引擎中輕鬆訪問MongoDB ObjectId日期?
- 15. 使用php如何輕鬆創建表單?
- 16. 工具輕鬆地嘲笑RESTful服務
- 17. 輕鬆挖掘數據庫的工具
- 18. 在Qt中輕鬆創建動態表單/控件
- 19. 如何輕鬆查看模板Haskell語句的輸出?
- 20. Perl - 模板工具包 - 如何獲取模板中的變量列表?
- 21. 如何使用jQuery在Phonegap中輕鬆點擊每行來創建表格
- 22. 如何從PHP代碼中輕鬆創建POST?
- 23. 如何從差異向量中輕鬆創建差異矩陣?
- 24. 在Java中輕鬆解包整個Tar
- 25. 如何輕鬆獲取在模板中創建項目的管理員的名稱
- 26. 模板工具包和Juniper
- 27. 無法使用WPF工具包爲Accordion創建AccordionItem模板
- 28. 創建分組輸出使用模板工具包
- 29. PHP庫輕鬆創建進程(fork)
- 30. 用PHP輕鬆創建XML文檔
嗯,是公平的,查詢被執行用戶可以很容易地使用'SELECT col1,col2,...'而不僅僅是'SELECT *'來定義順序。顧名思義,HTML :: Table :: FromDatabase將查詢結果轉換爲HTML表格。在文檔中的例子確實將'SELECT *'作爲一個簡單的例子來說明 - 雖然可以,但我可以改變它以保持純粹主義者的快樂:) – 2011-10-10 16:23:03