我有一个正在评估代码段的电视多选列表类型:
@EVAL return $modx->runSnippet('getFeaturedResourceTree');
评估此片段:
<?php
$output = array();
$context = $modx->resource->get('context_key');
$sql = "select * from modx_site_content where context_key = '$context' order by `pagetitle`;";
$results = $modx->query($sql);
foreach($results as $result){
$output[] = $result['pagetitle'].'=='.$result['id'];
}
$output = implode('||', $output);
echo $output;
return;
这在管理器中有效,我可以在列表中选择和选择多个资源。但是,当我保存电视时,没有任何内容被保存。数据库中不存在电视值,当我重新加载资源时,电视字段为空白。
这可能是什么问题?
答案 0 :(得分:1)
我非常肯定您可以使用@SELECT
绑定而不是@EVAL
来完成您尝试执行的操作。这有两个潜在的好处:
@EVAL
是邪恶,LOL。不是所有的时间,请注意 - @EVAL
肯定有合法用途,但我个人总是非常努力地找到替代方案,每当我考虑使用@EVAL
时。 我要告诉你的方法过去对我有用,所以我猜测它会对你有用。
@SELECT pagetitle,id FROM modx_site_content WHERE context_key ='web'ORDER BY`pagetitle`
如果您使用@EVAL
,因为您有多个上下文并且您希望当前正在编辑资源的上下文,那么您可以使用您的代码段,但我会尝试:
@CHUNK
绑定将其调入TV Input Options字段。还有一点需要注意:我不记得电视中的当前资源是$modx->resource
还是$resource
,但您可能需要仔细检查。