web-dev-qa-db-ja.com

#attachedプロパティを使用してシステムjsライブラリをアタッチする(D7)

フォームAPIを使用してフォームを定義するとき、次のように自分のCSSとJSをアタッチできます。

$form['#attached']['css'] = array(
    drupal_get_path('module', 'my_module') . '/my_css_file.css',
);
$form['#attached']['js'] = array(
    drupal_get_path('module', 'my_module') . '/my_js_file.js',
);

Drupal.orgのこのページ は、システムライブラリを同じ方法でアタッチできることを示唆し、この例を示しています。

$form['#attached']['library'][] = array('system', 'jquery.cookie');

ただし、この行をフォームに追加すると、次のようになります。

$form['#attached']['library'][] = array('ui.droppable');

その後、ライブラリは追加されません。

私が古い方法で行くと:

drupal_add_library('system', 'ui.droppable');

その後、追加されます。

何が悪いのですか?

4
Felix Eve

実際の例から言えば、これが必要なものだと思います。

$form['#attached']['library'][] = array('system', 'ui.droppable');

モジュール名がないと、Drupalは、ライブラリフックの場所を知ることができません。

ただし、sites/all/libraries/myAwesomeLibraryからカスタムライブラリを追加する場合は、これが正しい方法です。

$form['#attached']['libraries_load'][] = array('myAwesomeLibrary');
12
Clive