Php 胡须模板中的嵌套数据
我的胡子是全新的,这是我的第一个项目,我正在尝试它。我将它与Kohana3.2和Kostache模块以及mustache的PHP实现一起使用 我收集了一系列体育比赛,每个比赛都有许多项目,每个项目有3个实体,我称之为“结果”。我的任务是在一个表中显示所有这些内容。以下模板显示了我需要如何显示此表Php 胡须模板中的嵌套数据,php,kohana,mustache,kohana-3.2,Php,Kohana,Mustache,Kohana 3.2,我的胡子是全新的,这是我的第一个项目,我正在尝试它。我将它与Kohana3.2和Kostache模块以及mustache的PHP实现一起使用 我收集了一系列体育比赛,每个比赛都有许多项目,每个项目有3个实体,我称之为“结果”。我的任务是在一个表中显示所有这些内容。以下模板显示了我需要如何显示此表 {{#tournaments}} <h2>{{name}}</h2> <table class="event_list"> {{#ev
{{#tournaments}}
<h2>{{name}}</h2>
<table class="event_list">
{{#events.find_all}}
<tr>
<td>{{day}}</td>
{{#outcomes.find_all}}
<td class="outcome">{{name}}</td>
{{/outcomes.find_all}}
</tr>
{{/events.find_all}}
</table>
{{/tournaments}}
这是可以修复的吗?Mustache是无逻辑的,这意味着您想要的所有逻辑(除了简单的存在检查和循环)都应该通过将逻辑包含在您用作输入的JSON中来完成 基本上,您需要将所有变量(如css类)编码到json中 按照您的示例,请参阅下面的JSON和模板(未经测试,但这应该可以让您继续) JSON 模板
{{#tournaments}}
<h2>{{name}}</h2>
<table class="event_list">
{{#events}}
<tr>
<td>{{day}}</td>
{{#outcomes}}
<td class="outcome {{cssClass}}">{{name}}</td>
{{/outcomes}}
</tr>
{{/events}}
</table>
{{/tournaments}}
因为这会重复很多次,所以您可以将其外部化给助手
JAVASCRIPT:
var myHelper = function(param){
return "class"+param;
}
JSON
或者从“名字”推断可能更好
.... {
name: "outcomeTypeA",
cssClass: function(){
return myHelper(this); //this refers to object literal on this level
//containing 2 properties: 'name' and 'cssClass'
}
},....
然后:
var myHelper = function(obj){
var param = obj.name.substring(obj.name.length-2); //get last char from 'name'-prop
return "class"+param;
}
您可以尝试在视图模型中使用类似于以下内容的函数:
public function outcomes()
{
$outcomes = ORM::factory('outcome')->find_all();
$result = array();
foreach ($outcomes as $outcome)
{
$push = $outcome->object();
$push['name'] = $outcome->name;
$push['class'] = 'class_'.$outcome->name;
$result[] = $push;
}
return $result;
}
然后在你的胡子上你会有这样的东西:
{{#tournaments}}
<h2>{{name}}</h2>
<table class="event_list">
{{#events.find_all}}
<tr>
<td>{{day}}</td>
{{print_outcomes}}
</tr>
{{/events.find_all}}
</table>
{{/tournaments}}
public function print_outcomes(){
return "<td>aa</td>";
}
{{#outcomes}}
<td class="{{class}}">{{name}}</td>
{{/outcomes}}
{{{#结果}
{{name}}
{{/结果}
我忘了提到我使用PHP实现mustache,我不能在这里使用JSON函数(你是说mustache的PHP实现?嗯,如果是这样的话,我想端口缺少大的功能..恐怕我帮不了你,除了使用建议的非函数路径。
.... {
name: "outcomeTypeA",
cssClass: function(){
return myHelper(this); //this refers to object literal on this level
//containing 2 properties: 'name' and 'cssClass'
}
},....
var myHelper = function(obj){
var param = obj.name.substring(obj.name.length-2); //get last char from 'name'-prop
return "class"+param;
}
public function outcomes()
{
$outcomes = ORM::factory('outcome')->find_all();
$result = array();
foreach ($outcomes as $outcome)
{
$push = $outcome->object();
$push['name'] = $outcome->name;
$push['class'] = 'class_'.$outcome->name;
$result[] = $push;
}
return $result;
}
{{#outcomes}}
<td class="{{class}}">{{name}}</td>
{{/outcomes}}