Modx TV多选列表不保存值

时间:2015-08-25 19:38:47

标签: modx modx-revolution

我有一个正在评估代码段的电视多选列表类型:

@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;

这在管理器中有效,我可以在列表中选择和选择多个资源。但是,当我保存电视时,没有任何内容被保存。数据库中不存在电视值,当我重新加载资源时,电视字段为空白。

这可能是什么问题?

1 个答案:

答案 0 :(得分:1)

我非常肯定您可以使用@SELECT绑定而不是@EVAL来完成您尝试执行的操作。这有两个潜在的好处:

  1. @EVAL是邪恶,LOL。不是所有的时间,请注意 - @EVAL肯定有合法用途,但我个人总是非常努力地找到替代方案,每当我考虑使用@EVAL时。
  2. 我要告诉你的方法过去对我有用,所以我猜测它会对你有用。

    @SELECT pagetitle,id FROM modx_site_content WHERE context_key ='web'ORDER BY`pagetitle`

  3. 如果您使用@EVAL,因为您有多个上下文并且您希望当前正在编辑资源的上下文,那么您可以使用您的代码段,但我会尝试:

    1. 不要回显您的输出,而是将其返回。
    2. 在Chunk中调用代码段,并在测试页面上呈现Chunk,以确保它具有您想要的输出,格式化为电视输入选项的格式应该是它应该的样式。
    3. 如果Chunk输出通过测试,请使用@CHUNK绑定将其调入TV Input Options字段。
    4. 还有一点需要注意:我不记得电视中的当前资源是$modx->resource还是$resource,但您可能需要仔细检查。