$term = Term::load($_tid);
$term->field_league_id = 'ID value';
$term->Save();
上記のコードで条件を更新していますが、機能しません。 term-> Save()で用語を作成すると、正常に機能します。誰もがそれを経験していたので助けてください。
更新しました:
$term = Term::load($_tid);
$term->field_league_id->setValue($league_id);
$term->Save();
このソリューションは機能していません、それは投げています:
非オブジェクトのメンバー関数setValue()の呼び出し。
冒頭で、私は参考文献を宣言しました。既に。
use Drupal\taxonomy\Entity\Term;
新しい分類法を作成するためのコードは正常に機能していますが、更新用ではありません。
$term = Term::create([
'name' => $league->caption,
'vid' => 'league',
'field_league_id' => $league_id,
'field_league_code' => $league->league,
'field_league_year' => $league->year,
'field_league_numberofteams' => $league->numberOfTeams,
]);
$term->Save();
$term = Term::load($_tid);
$term->field_league_id->setValue('ID value');
$term->Save();
追加情報(コメントでリクエスト):
オブジェクトを出力すると、フィールドがクラスcore/lib/Drupal/Core/Field/FieldItemList.phpを使用していることがわかります。
メソッドを参照すると、FieldValueListオブジェクトを操作するためのいくつかの関数(setValue()など)が表示されます。
Drupal 8で開発しているとき、APIを学ぶために、
dump()関数は、私が扱っているオブジェクトのタイプを確認し、そのメソッドを検査するためにたくさん機能します。
dump($term); die();
実際、私のsettings.local.phpファイルにはインクルードがあります
include 'my_settings.php';
そしてそこに私はこの機能を持っています:
function nprint($obj) {
dump($obj);
die();
}
これは、オブジェクトを検査するために長年使用してきたものです。 drupalははるかにオブジェクト指向であるため、オブジェクトを出力して、使用するクラスを見つけることが不可欠です。
私にとってもう1つの重要なツールは、ファイル名で検索できるエディターを使用することです(私は無料のソフトウェアAptana Studio 3を使用しています)。
したがって、「FieldItemList」を処理していることがわかった場合は、「command + t」を実行してファイル名で検索し、「FieldItemList」を入力できます。これにより、Webベースの研究の多くが節約されます。そして、それはあなたがコードベースを学ぶのを助けます。
以下に簡単な例を示します。
$term = \Drupal\taxonomy\Entity\Term::load($tid);
if (!empty($term)) {
$term->field_league_id = 123; // For multivalue fields, use array().
$term->save();
}