我正在为Catalyst MVC框架创建数据库的网页。我不是全职程序员。但是我知道perl和java的基本知识。我是一名生物学家。我写了一个有表格的模板文件(view.tt)。我需要将此表的内容链接到另一个表中,该表另外再写入一个模板文件。我无法链接这两个模板(因为我无法正确生成网址)。任何人都可以帮助或指导我解决此问题。从另一个模板调用模板
以下代码是用于第二模板文件:
<h4>Analyses Table</h4>
<table id="analysis_table" width="90%">
<thead>
<tr>
<th align="center" valign="center">Dataset</th>
<th align="center" valign="center">Tissue</th>
<th align="center" valign="center">Expression</th>
<th align="center" valign="center">Analysis</th>
</tr>
</thead>
<tbody>
[% FOREACH result IN plets -%]
[% IF result.analysistypename == 'Cancer' -%]
[% matches = result.datasetname.match('(\w+) (\w+)') %]
<tr>
<td align="left" valign="top">[% result.datasetname %]</td>
<td align="left" valign="top">[% result.expression %]</td>
<td align="left" valign="top">[% result.datatype %]</td>
<td align="left" valign="top">[% result.generankpercentile %]</td>
</tr>
[% END -%]
[% END -%]
</tbody>
<tfoot>
<tr>
<th align="center" valign="center">Dataset</th>
<th align="center" valign="center">Tissue</th>
<th align="center" valign="center">Expression</th>
<th align="center" valign="center">Analysis</th>
</tr>
</tfoot>
</table>
下面的代码段是在具有表我的第一模板被超链接(view.tt)
<h4>Analyses Summary table</h4>
<table id="score_table" width="50%">
<thead>
<tr>
<th align="centre" valign="centre"> Analysis Type</th>
<th align="centre" valign="centre">Score</th>
</tr>
</thead>
<tbody>
[% FOREACH score IN gene.whs -%]
[% plots = [ ['Cancer', score.cancer_vs_normal_over, score.cancer_vs_normal_under],
['Bladder cancer', score.bladder_cancer_over, score.bladder_cancer_under],
['Brain and CNS cancer', score.brain_and_cns_cancer_over, score.brain_and_cns_cancer_under],
['Breast Cancer', score.breast_cancer_over, score.breast_cancer_under],
['Cervical Cancer', score.cervical_cancer_over, score.cervical_cancer_under],
['Colorectal cancer', score.colorectal_cancer_over, score.colorectal_cancer_under],
]
%]
[% FOREACH plot IN plots %]
<tr>
<td> [% pl0t.0 %]</td>
<td> [% pl0t.1 %] </td>
<td> [% pl0t.2 %] </td>
<td> [% (pl0t.1 + 5)/(plot.2 + 5) | format('%5.2f') %] </td>
</tr>
[% END %]
[% END %]
</tbody>
<tfoot>
<tr>
<th align="centre" valign="centre"> Analysis Type</th>
<th align="centre" valign="centre">Score</th>
</tr>
</tfoot>
</table>
Hi Ret,非常感谢,并且对于迟到的回复感到抱歉。正如你所理解的,我的目标是在汇总表和第二个加载了结果的表之间建立一个“实时”链接。我以某种方式以另一种方式链接模板。我必须在第一个模板中超链接到第二个模板。我的超链接在foreach循环中,看起来像这样。
[% FOREACH plot IN plots %]
<tr>
<td><a href="[% c.uri_for(c.controller('gene').action_for('sample'))%]/[% plot.0 %]>[% plot.0 %]</a></td>
<td> [% pl0t.1 %] </td>
<td> [% pl0t.2 %] </td>
<td> [% (pl0t.1 + 5)/(plot.2 + 5) | format('%5.2f') %] </td>
</tr>
[% END %]
此行正确链接到第二个模板(sample.tt)。第二个模板包含一系列表格。当在第一个表上单击超链接时,应该显示与该链接对应的表。我已成功链接模板。我在控制器(gene.pm)中创建了一个子例程,用于链接模板。我在实现自己的目标方面遇到了问题。第二个模板(sample.tt)中的html部分运行正常,但模板工具箱不起作用。我能够看到url中的变化,但在页面中没有反映出来。
下面是第二个模板子程序:
sub sample :Path('sample'):Args(1) {
my($self,$c,$plot)[email protected]_;
my @plets = $c->model('GeneDB::genewhs')->search({
Analysistypename => @plet,
});
$c->stash->{plets}=\@plets;
$c->stash->{template}='gene/sample.tt';
}
如果万一的问题是不明确的,请让我知道...我将不得不清除它..
谢谢提前...
嗨Ret,非常感谢,很抱歉,迟到的答复。正如你所理解的,我的目标是在汇总表和第二个加载了结果的表之间建立一个“实时”链接。我以某种方式以另一种方式链接模板。我必须在第一个模板中超链接到第二个模板。 – user1462804 2012-07-14 05:17:47