いくつかの実験を行った結果、_Drupal\Core\Render\Markup
_のインスタンスからstring
プロパティを取得できる唯一の方法は、__toString()
メソッドを使用することです。
_$variables['fields']['title']->content->__toString();
_
しかし、これらの最初のアンダースコアは、これがプライベート関数であり、外部では使用されないことを示していると思います。コンテンツを取得するためのより良い方法はありますか?私の最終的な目標は、そのコンテンツを何らかの方法で変更することです。
コンテンツを編集することはできません。それを変更するパブリックメソッドはありません。
通常は、新しいインスタンスでオーバーライドするだけです。
_$variables['fields']['title'] = Drupal\Core\Render\Markup::create('New content');
_
二重下線は、文字列コンテキストでオブジェクトを使用すると自動的に呼び出される魔法の関数を示します。これは読み取り専用です。
古いマークアップに文字列を追加したい場合、それはマジック関数__toString()
がどのように機能するかの例です:
_$variables['fields']['title'] = Drupal\Core\Render\Markup::create($variables['fields']['title'] . '!!!');
_
文字列にキャストすることで、マジック関数__toString()
を呼び出すことができます:$markup = $variables['fields']['title']->content; (string) $markup === $markup->__toString();