$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();清除缓存,但它没有起到作用。
发布于 2012-12-27 17:52:57
好的,试试这个
$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));发布于 2015-08-10 07:42:32
你会喜欢这个的:
$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,因此会将请求当作name 11来处理,而不是ID。您可以发送TV的id或name。我个人只使用名字,因为以后处理起来容易得多。
我放置的代码工作正常,并经过测试。
我将为此提交一份bug报告,因为它应该是稍微干净一点的。
此外,您可以检索当前资源,更新它,等等。但是在资源更新后,您不会重新加载资源的“新”版本。实际上,您在同一状态下查看相同的变量两次。
mod->资源与您进入页面时相同。
通过将其设置为var,它会随着您的更改而更新。
https://stackoverflow.com/questions/14052207
复制相似问题