2017-06-26 9 views
-1

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.

Antwort

0

Ihre module_form_alter() benötigt Javascript-Dateien ist das Thema:

$form['#attached']['library'][] = 'smartott/ckeditor'; 
$form['#attached']['library'][] = 'smartott/preview'; 

Wenn Sie Ihr Moduls Javascript zu laden, Ihr Modul Name unter Berücksichtigung ist, na ja, module, benötigen Sie die Bibliothek wie folgt aus:

Dabei ist module Modulname und preview ist der Name der Bibliothek, wie in der Datei module.library.yml definiert.

Dee Drupal.org Dokumentation für die Aufnahme von Bibliotheken, es ist ziemlich gut.

+0

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. –