Widziałem wiele pytań dotyczących łączenia z zasobami kompozycji w CakePHP i żaden z nich nie rozwiązuje mojego problemu, a także ostatni wpis był w 2012 roku, więc pomyślałem, że będę ukazywał moje pytanie tam na zewnątrz.Kompozycja tematów Nie działa w CakePHP 2.2.4
Mam zaimplementowane motywy w mojej aplikacji CakePHP 2.2.4. Mój motyw o nazwie "default" (poprzednio nazywany "Default" do 1 minuty temu) znajduje się pod numerem app/View/Themed/default
(poprzednio nazwa motywu miała również odpowiednią literę D dla nazwy folderu).
Mój plik css znajduje się app/View/Themed/default/webroot/css/style.css
którą nazywamy w app/View/Themed/default/Layouts/default.ctp
z następującego kodu układu
Default.ctp
echo $this->Html->css('style');
(Próbowałem przy użyciu kapitału W dla Webroot „na wszelki wypadek "ale nic dziwnego, że to nie zadziałało)
Zawarłem ten link w moim AppControllerze, aby ustalić, jakiego tematu używam. Wszystkie pliki widoku wskazują poprawną kompozycję, ale problem jest teraz związany z arkuszem stylów (nie mam jeszcze do czynienia z innymi zasobami, takimi jak pliki js lub pliki obrazów).
AppController
class AppController extends Controller {
public $theme = 'default'; // previously 'Default'
// also, have used both 'public $theme' and 'var $theme', no difference
mam przeczytać poniższe pytania i żaden z "rozwiązań" pracowali. Większość rozwiązań polegała na sprawdzaniu pisowni/wielkich liter, sprawdzaniu uprawnień do folderów, sprawdzaniu pliku .htaccess itd. Wciąż nic. I nowe pomysły?
.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
Pozwolenie folder dla Webroot motyw i CSS są foldery 755.
Oto niektóre zasoby użyłem bez powodzenia.
http://book.cakephp.org/2.0/en/views/themes.html
CakePHP theme resources return error
Unable to get css and image files in Themes webroot folder of cakephp
https://groups.google.com/forum/#!topic/cake-php/xaRAugMoNSc
https://groups.google.com/forum/#!topic/cake-php/siYVWchUb1g
AKTUALIZACJA: przy użyciu $this->Html->image('image.jpg')
wyświetla poprawnie zdefiniowany obraz pod adresem View/Themed/Default/webroot/img/image.jpg
. Jednak użycie $this->Html->css('style')
spowoduje pobranie arkusza stylów z app/webroot/css/style.css
, a nie z app/View/Themed/Default/webroot/css/style.css
. Musiałem również zmienić nazwę motywu i nazwę folderu mojego motywu z powrotem na "Domyślny" z dużą literą D, aby uzyskać poprawne połączenie obrazu. Arkusz stylów nadal nie łączy się poprawnie. Jeśli przejdę bezpośrednio do mojego arkusza stylów w przeglądarce, pojawi się pusta strona. Jeśli przejdę do arkusza stylów, który nie istnieje w moim folderze tematycznym, otrzymam prawidłowy komunikat o błędzie. Jednak wyświetlenie źródła mojego arkusza stylów kompozycji (takiego, który istnieje), pokazuje pustą stronę.
nie ma różnicy, czy mogę użyć „default” lub "Domyślny" jako nazwa motywu. ** AKTUALIZACJA: ** przy użyciu '$ this-> Html-> image ('image.jpg')' wyświetla poprawnie zdefiniowany obraz znajdujący się w 'View/Themed/Default/webroot/img/image.jpg'. Jednak użycie '$ this-> Html-> css ('style') próbuje pobrać arkusz stylów z' app/webroot/css/style.css', a nie z 'app/View/Themed/Default/webroot/css/style.css' – bowlerae
To wszystko! CakePHP oczekuje, że folder zostanie nazwany przy pomocy CamelCase, bez względu na nazwę tematu określoną za pomocą podrzędnych kontrolek. –
Dokładnie to, co mówi Serge, jeśli masz swój katalog tematyczny małymi literami, po prostu zamień go na wielkie i zadziała – xorinzor