1
$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 が更新されます。

$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();んでした。

4

2 に答える 2

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 であるため、ID ではなく名前が 11 であるかのように要求を処理します。テレビのidまたは のいずれかを送信できます。name個人的には、名前だけを使用します。これは、後で処理するのがはるかに簡単だからです。

私が配置したコードは機能し、テストされました。

少しきれいになるはずなので、これについてバグレポートを提出します。

また、現在のリソースを取得したり、更新したりします。ただし、更新後にリソースの「新しい」バージョンをリロードしません。同じ状態の同じ var を 2 回見て影響を受けています。

mod->resource は、ページに入ったときと同じです。

変数にすることで、変更を処理するときに更新されます。

于 2015-08-09T23:42:32.300 に答える
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));
于 2012-12-27T09:52:56.677 に答える