私はdrupal 8でアセットインクルードエンジン経由でjavascriptを組み込もうとしましたが、私はJSファイルに関する問題に取り組んでいます。Drupal 8 JSライブラリを含む
テーマではなく、モジュールではなく、javascriptファイルを含めたいと思っています。キャッシュをリフレッシュし、ノード編集ページをリロードするとき
module.libraries.yml
preview:
version: 1.x
js:
js/preview.js: {preprocess: false}
dependencies:
- core/jquery
- core/drupalSettings
ckeditor:
remote: https://cdn.ckeditor.com/4.7.0/standard/ckeditor.js
version: 4.7.0
js:
https://cdn.ckeditor.com/4.7.0/standard/ckeditor.js: { type: external }
module.module
function module_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id)
{
// it is the plan edit form, lets hide some fields
if($form_id=='node_plans_edit_form') {
foreach([
'field_currency',
'field_plan_price',
'field_length',
'field_plan_trial_length',
'field_plan_trial_length_interval',
'field_purchase_endpoint',
'field_su'
] as $disabledField) {
$form[$disabledField]['#disabled'] = true;
}
}
$form['#attached']['library'][] = 'module/ckeditor';
$form['#attached']['library'][] = 'module/preview';
$url = \Drupal::service('module.properties')->interface['url'];
$form['#attached']['drupalSettings']['module']['ckeditor']['proto'] = explode(':', $url)[0];
$form['#attached']['drupalSettings']['module']['ckeditor']['host'] = explode('//', $url)[1];
return $form;
}
は、私は、スタックトレースを取得:
User warning: The following theme is missing from the file system: smartott in drupal_get_filename() (line 236 of core/includes/bootstrap.inc).
drupal_get_filename('theme', 'module') (Line: 259)
drupal_get_path('theme', 'module') (Line: 390)
Drupal\Core\Asset\LibraryDiscoveryParser->drupalGetPath('theme', 'module') (Line: 85)
Drupal\Core\Asset\LibraryDiscoveryParser->buildByExtension('module') (Line: 87)
Drupal\Core\Asset\LibraryDiscoveryCollector->getLibraryDefinitions('module') (Line: 66)
Drupal\Core\Asset\LibraryDiscoveryCollector->resolveCacheMiss('module') (Line: 148)
Drupal\Core\Cache\CacheCollector->get('module') (Line: 44)
Drupal\Core\Asset\LibraryDiscovery->getLibrariesByExtension('module') (Line: 58)
Drupal\Core\Asset\LibraryDiscovery->getLibraryByName('module', 'ckeditor') (Line: 54)
Drupal\Core\Asset\LibraryDependencyResolver->doGetDependencies(Array) (Line: 31)
Drupal\Core\Asset\LibraryDependencyResolver->getLibrariesWithDependencies(Array) (Line: 104)
Drupal\Core\Asset\AssetResolver->getLibrariesToLoad(Object) (Line: 116)
Drupal\Core\Asset\AssetResolver->getCssAssets(Object, 1) (Line: 291)
Drupal\Core\Render\HtmlResponseAttachmentsProcessor->processAssetLibraries(Object, Array) (Line: 161)
Drupal\Core\Render\HtmlResponseAttachmentsProcessor->processAttachments(Object) (Line: 45)
Drupal\Core\EventSubscriber\HtmlResponseSubscriber->onRespond(Object, 'kernel.response', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.response', Object) (Line: 184)
Symfony\Component\HttpKernel\HttpKernel->filterResponse(Object, Object, 1) (Line: 166)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 64)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 99)
Drupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1) (Line: 78)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 50)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 652)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
私のJSファイルが正常に含まれていれば、ブラウザコンソールに情報がダンプされますが、それはまだ起こっていません。これはバグだと感じていたり、ドキュメントを完全に守っているので、パラメータが不足しています。
:
$form['#attached']['library'][] = 'smartott/ckeditor';
$form['#attached']['library'][] = 'smartott/preview';
あなたは、よく、あなたのモジュールの名前があるmodule
を考慮すると、あなたのモジュールのJavaScriptをロードする場合は、このようなライブラリが必要になります。
私はタイプミスがあったので、私は私の質問を編集しました。正しいモジュール名を使用していますが、代わりにModule JSではなくTheme JSを取得しようとしています。 –