Thema Asset funktioniert nicht In CakePHP 2.2.4

8

Ich habe viele Fragen bezüglich der Verlinkung zu Themen-Assets in CakePHP gesehen und keine von ihnen löst mein Problem und auch der letzte Beitrag war im Jahr 2012, also dachte ich, ich würde meine Frage dort hinwerfen.

Ich habe Themen in meiner CakePHP 2.2.4-Anwendung implementiert. Mein Thema namens "default" (früher "Default" bis vor 1 Minute) befindet sich bei app/View/Themed/default (zuvor hatte der Themenname auch einen entsprechenden Großbuchstaben D für den Ordnernamen).

Meine CSS-Datei befindet sich bei app/View/Themed/default/webroot/css/style.css , die ich in app/View/Themed/default/Layouts/default.ctp mit dem folgenden Code aufrufen

Default.ctp-Layout

%Vor%

(Ich habe versucht, das Großbuchstabe W für Webroot "nur für den Fall", aber keine Überraschung, die nicht funktioniert)

Ich habe diesen Link in meinen AppController eingefügt, um festzustellen, welches Thema ich verwende. Alle Ansichtsdateien zeigen auf das richtige Thema, aber das Problem ist gerade mit dem Stylesheet (ich habe noch mit anderen Assets wie js oder Bilddateien zu tun).

AppController

%Vor%

Ich habe die folgenden Fragen gelesen und keine der "Lösungen" hat funktioniert. Die meisten Lösungen bestanden darin, die Rechtschreibung / Großschreibung zu überprüfen, die Berechtigungen für die Ordner zu überprüfen, meine .htaccess-Datei zu überprüfen usw. Immer noch nichts. Und neue Ideen?

.htaccess

%Vor%

Die Ordnerberechtigung für das Thema webroot und css Ordner ist 755.

Hier sind einige Ressourcen, die ich ohne Glück benutzt habe.

Ссылка

CakePHP Theme-Ressourcen geben einen Fehler zurück

Nicht erreichbar css und Bilddateien in Themes Webroot-Ordner von CakePHP

Ссылка

CakePHP 2.x-Thema funktioniert nicht

Ссылка

UPDATE: Die Verwendung von $this->Html->image('image.jpg') zeigt das definierte Bild korrekt an, das sich in View/Themed/Default/webroot/img/image.jpg befindet. Die Verwendung von $this->Html->css('style') versucht jedoch, das Stylesheet von app/webroot/css/style.css und nicht von app/View/Themed/Default/webroot/css/style.css zu ziehen. Ich musste auch den Namen des Themas und den Ordnernamen meines Themas mit einem Großbuchstaben D auf "Standard" zurücksetzen, damit das Bild korrekt verlinkt wurde. Das Stylesheet wird immer noch nicht korrekt verknüpft. Wenn ich in meinem Browser direkt zu meinem Themen-Stylesheet navigiere, erscheint eine leere Seite. Wenn ich zu einem Stylesheet navigiere, das in meinem Theme-Ordner nicht vorhanden ist, erhalte ich die entsprechende Fehlermeldung. Wenn Sie jedoch die Quelle meines Themen-Stylesheets anzeigen (das vorhandene), wird eine leere Seite angezeigt.

    
bowlerae 13.08.2013, 20:39
quelle

4 Antworten

1

Ok, vielleicht ist das offensichtlich ... aber mein Stylesheet verwendet Funktionen, die ich in einem benutzerdefinierten Helper erstellt habe. Wenn sich das Stylesheet in app/webroot/css befindet, gibt es kein Problem, aber wenn sich das Stylesheet in app/View/Themed/Default/webroot/css befindet, kann es nicht korrekt angezeigt werden und daher Cake-Links zu dem nicht vorhandenen Stylesheet, das sich in app/webroot/css befinden soll. Ich habe die Helfer aus meinem Themen-Stylesheet entfernt und alles funktioniert jetzt.

Ich habe auch den Namen des Themas von "default" auf "Default" zurückgesetzt, damit die Bilder korrekt angezeigt werden, obwohl $this->Html->image (und vermutlich auch die Stylesheet- und JS-Dateien) korrekt verknüpft sind der Großschreibung.

    
bowlerae 14.01.2014, 20:53
quelle
3

CakePHP verwendet die CamelCase-Konvention. Versuchen Sie, den Namen Ihres Themas von zB zu ändern. default bis Default . Es ist mir auch passiert.

Mein Thema war die Benennung als megaecia , und keine Fehlermeldung, kein log nothing (weil ich Windows war, in Unix passiert es nicht), dann änderte ich in Megaecia und alles funktioniert erfolgreich.

Ich hoffe, ich habe geholfen.

    
Gabriel Carvalho 01.12.2013 16:41
quelle
0

Asset-Dateien des Themes müssen auf folgende Weise im Ordner app/webroot/theme abgelegt werden:

%Vor%

Wo default ist der Name des Themas, beginnend mit dem Kleinbuchstaben. Der Ordnername theme ist fest codiert. Beachten Sie, dass kein Suffix -ed vorhanden ist.

Theme-Layouts sollten im Ordner app/View/Themed/Default/Layouts platziert werden. Der Themenname sollte die CamelCase-Regel respektieren, da Gabriel Oak antwortete. Eigentlich hatte ich das Problem, wenn auf dem Linux-Rechner CakePhp mein Layout nicht gefunden wurde, weil ich meinen Theme-Ordner mit Kleinbuchstaben wie app/View/Themed/default/Layouts benannt habe.

Und noch etwas: Im Controller-Theme sollte auch in Kleinbuchstaben angegeben werden: $this->theme = 'default'; . Es wirkt sich auf die Suche nach Assets aus, da wir unsere Assets im Kleinbuchstaben-Ordner app/webroot/theme/default abgelegt haben.

    
Serge S. 07.04.2014 19:55
quelle
0

Wenn Sie versuchen, aus einem Unterverzeichnis der Webroot Ihres Themes auf eine CSS-Ressource zuzugreifen, müssen Sie am Anfang ein / hinzufügen.

d. h.

%Vor%

Dies ruft das CSS aus dem Themenverzeichnis auf.

Wenn Sie am Anfang nicht / hinzugefügt haben, sucht cake nicht nach dem Themenordner, sondern versucht, das CSS aus dem Standard-Webroot-Verzeichnis Ihrer App zu laden

    
loggyz 10.12.2014 08:35
quelle

Tags und Links