我正在构建一个存档页面,我无法在一年之内提取和过滤我的结果。
页面类型有一个下拉列表,用于选择应显示的年份
private static $db = array(
"SubType" => "Enum(array('2013', '2014', '2015', '2016', '2017', '2018'))"
);
模板调用函数GetFilms
public function GetFilms()
{
$films = DataObject::get("Film");
return $films;
}
如果我使用上面的功能,它可以工作但显示所有电影。
当我尝试修改它以使用已过去的年份进行过滤时,
public function GetFilms($SubType)
{
$films = DataObject::get("Film","'Year' = '$SubType'");
return $films;
}
该页面不再显示任何影片。有谁知道我做错了什么?
以下是显示结果的代码
<% loop GetFilms($SubType) %>
<div class="film" data-title="$Title">
<a href="$Top.Link?film=$ID">
<div class="inner">
<h3 class="filmTitle">$Title</h3>
<img class="filmImg" src="$FilmImage.URL" alt="$Title" />
</div>
</a>
</div>
<% end_loop %>
感谢您的帮助!
答案 0 :(得分:2)
我建议做一些调试。您可以在GetFilms()
中添加一些点,例如var_dump($SubType);
查看模板传入的内容。您应该检查是否可以使用虚拟值手动访问Film DataObjects,例如Film::get()->filter(['Year' => 2013])
,然后,一旦您将数据源和方法输入作为问题区域删除,您就可以将其重新组合在一起。
我还建议使用DataList方法从DataObject::get
参数转向可链式方法,例如:
public function GetFilms($SubType)
{
return Film::get()->filter(['Year' => $SubType]);
}
答案 1 :(得分:0)
删除额外的&#39;&#39;从$ SubType到
即$ films = DataObject :: get(&#34; Film&#34;,&#34;&#39; Year&#39; = $ SubType&#34;);
当您将$ SubType单引号时,变为文字并且不评估值