2016-03-24 8 views
3

から削除取得されます。しかし、ページのレンダリング中に、<canvas>要素が自動的に削除されています。
コントローラコードの下にあります。ここでDrupalの8 - canvas要素は、私は私がチャートをロードする<code><canvas></code>要素を作成しようとしていますDrupalの8</p> <p>にチャートJSを実装しようとしていますDrupalの8に新しいですページ

class DashboardController extends ControllerBase { 

    public function content() { 

    return array(
     '#type' => 'markup', 
     '#markup' => '<div class="chart"><canvas id="test"></canvas></div>', 
    ); 
    } 
} 

、私はページ内のキャンバスを見つけることができませんのみ<div class="chart"></div>

取得しています。そのため、グラフが読み込まれていません。

誰でも私が正確な問題を理解するのを手伝ってください。

+0

この質問は、Drupalの回答に移動する必要があります。 –

答えて

0

何が起こっているのは、<canvas>要素がdrupal(duh)によって自動的に削除されることです。私はそれを止める方法を知らないが、私は回避策を持っている。 JavaScriptを使用して、キャンバスをプログラムにプログラムで追加することができます。それはすでにjavascriptを実行しているので、javascriptで作業するために必要な要素を追加するのは難しくありません。

$("#chart").append("<canvas id=\"test\">"); 

このコードは、あなたのdivは、単にJavaScriptでなく、Drupalの、そこを通って中にキャンバスタグを追加し、その後<div id="chart"></div>を持っていると言っています。 JQueryを使用しますが、do it without itを使用できます。

1

遅くともお詫び申し上げますが、この問題を自分自身が偶然見つけたのは、2つの「正しい」方法です。 Render API overviewから

#markup:が配列の直接HTMLマークアップを提供することを指定します。 段落タグの説明など、マークアップが非常にシンプルでない限り、代わりに#themeまたは#type を使用することをお勧めします。これにより、テーマでマークアップをカスタマイズできるようになります。 の値は、既知のXSSベクトルを削除し、XSSベクトルではない HTMLタグの許容リストを許可しながら、\ Drupal \ Component \ Utility \ Xss :: filterAdmin()、 を通過することに注意してください。 (つまり、 は許可されていません)許可されるタグの一覧 については、\ Drupal \ Component \ Utility \ Xss :: $ adminTagsを参照してください。 マークアップでこのホワイトリストにないタグ が必要な場合は、テーマフック とテンプレートファイルおよび/またはアセットライブラリを実装できます。あるいは、レンダリング配列のキー#allowed_tags を使用して、どのタグがフィルタ処理されるかを変更することができます。

ですから、テーマフックを実装したり、ビット以下エレガントな何かを行うことができ、次のいずれか

use Drupal\Component\Utility\Xss; 

class DashboardController extends ControllerBase { 

    public function content() { 

    return array(
     '#type' => 'markup', 
     '#markup' => '<div class="chart"><canvas id="test"></canvas></div>', 
     '#allowed_tags' => array_merge(Xss::getHtmlTagList(), ['canvas', 'div']) 
    ); 
    } 
} 
関連する問題

 関連する問題