2

「フィールド コレクション」モジュールを使用すると、次のエラーが発生します。

 Twig_Sandbox_SecurityError: Calling "uri" method on a "Drupal\field_collection\Entity\FieldCollectionItem" object is not allowed in "themes/communitylife/templates/content/node.html.twig" at line 83. in Drupal\Core\Template\TwigSandboxPolicy->checkMethodAllowed() (line 99 of core/lib/Drupal/Core/Template/TwigSandboxPolicy.php).

問題の原因となるコードは次のとおりです。

<div class=" title-col col-md-7">

     <a  href="{{file_url(node.field_pressemappe_bildmaterial[key].getFieldCollectionItem().field_presse_bild_file.entity.uri.value)}}" target="_blank"> <strong> {{node.field_pressemappe_bildmaterial[key].getFieldCollectionItem().field_presse_bild_description.value}}

      <span class="file-type"> ({{node.field_pressemappe_bildmaterial[key].getFieldCollectionItem().field_presse_bild_file.entity.uri.value | slice(-3) }} </span>, <span class="file-size"> {{node.field_pressemappe_bildmaterial[key].getFieldCollectionItem().field_presse_bild_file.entity.size }}) </span> 

      </strong></a>

</div>

これを修正する最良の方法は何ですか? サンドボックス ポリシーで許可されているメソッドに (uri) を追加することによるものですか? はいの場合、どうすればそれを行うことができますか?

私は小枝のドキュメントで、次のようなことができることを読みました:

    $policy = new Twig_Sandbox_SecurityPolicy($tags, $filters, $methods, $properties, $functions);

しかし、このコードをどこにどのように配置すればよいかわかりませんでした。

前もって感謝します

4

1 に答える 1

7

Drupal の twig サンドボックス ポリシー ( core/lib/Drupal/Core/Template/TwigSandboxPolicy.phpで定義) は、グローバルな $settings 配列から読み取るため、settings.php で独自に定義できます。

// Override default twig method whitelist.
$settings['twig_sandbox_whitelisted_methods'] = [
  // Defaults:
  'id',
  'label',
  'bundle',
  'get',
  '__toString',
  'toString',
  // Additions:
  'url',
];
于 2017-07-26T10:14:24.793 に答える