$modx -> resource -> setTVValue(11, 1);
print_r($modx -> resource -> getTVValue(11));
$modx -> resource -> setTVValue(11, 2);
print_r($modx -> resource -> getTVValue(11));
我有一个输出2和2的片段,而它应输出1和2.资源缓存已关闭;片段调用也没有缓存。
我试图通过其他方式解决此问题,但只有在整个页面重新加载后它仍然会更新我的电视:
$tv = $modx->getObject('modTemplateVar',array('id'=>'11'));
$tv -> setValue($modx->resource->get('id'), 88);
$tv->save();
print_r($modx -> resource -> getTVValue(11));
顺便说一句,如果我不使用电视,一切都很好!
$modx -> resource -> set("pagetitle", 1);
print_r($modx -> resource -> get("pagetitle"));
$modx -> resource -> set("pagetitle", 2);
print_r($modx -> resource -> get("pagetitle"));
如何解决电视的这个问题?我试图清除像$modx->cacheManager->refresh();
这样的缓存,但它没有做到这一点。
答案 0 :(得分:0)
好的,试试这个
$id_resource = $modx->resource->get('id');
$id_tv = 11;
$value = 88;
$tv = $modx->getObject('modTemplateVar',array('id'=>$id_tv));
$tv -> setValue($id_resource, $value);
$tv->save();
如果您需要获取资源,请尝试此
$id_resource = $modx->resource->get('id');
$id_tv = 11;
$res = $modx->getObject('modResource',array('id'=>$id_resource));
print_r($res->getTVValue($id_tv));
答案 1 :(得分:0)
你会喜欢这个:
$changeit = 11;
//$changeit= 'templateVarName';
$r = $modx->getObject('modResource', 177);
// or $r = $modx->resource
$tvs = $r->getTemplateVars();
if ($tvs) {
foreach ($tvs as $object){
if (is_object($object) && $object instanceof modTemplateVar){
print_r($object->toArray());
}
}
}
$r->setTVValue($changeit,'99999fhfhg');
echo '<hr>'. $r->getTVValue($changeit);
$r->setTVValue($changeit,'888885454564');
echo '<hr>'. $r->getTVValue($changeit);
$r->setTVValue($changeit,'123456789');
echo '<hr>'. $r->getTVValue($changeit);
发送
$changeit = '11';
它变为一个字符串,is_string为true,从而处理请求,就好像名称是11,而不是ID。您可以发送电视的id
或name
。我个人只使用名字,因为以后更容易处理。
我放置的代码可以使用并经过测试。
我将提交一份关于此的错误报告,因为它应该是一个有点清洁。
此外,您检索当前资源,更新它等。但是在更新后您不会重新加载资源的“新”版本。你有效地在同一个状态下查看同一个var两次。
mod-&gt;资源与您进入页面时相同。
通过将其变为var,它会在您处理更改时进行更新。