Ich habe versucht, Javascript über die Asset-Einschluss-Engine in Drupal 8 aufzunehmen, aber ich laufe immer wieder auf Probleme mit JS-Dateien.Drupal 8 Include JS Libararies
Es scheint so, als wolle man die Javascript-Datei von einem Theme und nicht vom Modul einfügen.
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;
}
ich einen Stack-Trace, wenn die Cache-Aktualisierung und Neuladen der Knoten-Edit-Seite:
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)
Wenn die JS-Datei erfolgreich eingefügt wurde, werden einige Informationen an die Browser-Konsole gesendet, aber das ist noch nicht geschehen. Es fühlt sich an, als wäre das ein Fehler oder mir fehlen einige Parameter, da ich die Dokumentation vollständig befolge.
Ich habe meine Frage bearbeitet, da ich einen Tippfehler hatte. Es verwendet den richtigen Modulnamen, aber stattdessen versucht es, Theme JS statt Modul JS zu erhalten. –