Ресурс Темы Не работает В CakePHP 2.2.4


Я видел много вопросов, касающихся ссылок на ресурсы темы в CakePHP, и ни один из них не решает мою проблему, а также самый последний пост был в 2012 году, поэтому я подумал, что выложу свой вопрос там.

Я реализовал темы в своем приложении CakePHP 2.2.4. Моя тема под названием "по умолчанию" (ранее называвшаяся "По умолчанию" до 1 минуты назад) расположена по адресу app/View/Themed/default (ранее название темы также имело соответствующую заглавную букву D для имени папки).

Мой css-файл находится по адресу app/View/Themed/default/webroot/css/style.css, который я вызываю в app/View/Themed/default/Layouts/default.ctp со следующим кодом

Макет по умолчанию.ctp

echo $this->Html->css('style');

(Я пытался использовать заглавную букву W для webroot "на всякий случай", но неудивительно, что это не сработало)

Я включил эту ссылку в свой AppController, чтобы определить, какую тему я использую. Все файлы просмотра указывают на правильную тему, но сейчас проблема связана с таблицей стилей (мне еще предстоит поработать с другими ресурсами, такими как js или изображение файлы).

Контроллер приложений

class AppController extends Controller {

    public $theme = 'default'; // previously 'Default'
    // also, have used both 'public $theme' and 'var $theme', no difference

Я прочитал следующие вопросы, и ни одно из "решений" не сработало. Большинство решений заключались в проверке орфографии/прописных букв, проверке разрешений на папки, проверке моего файла.htaccess и т. Д. По-прежнему ничего. И новые идеи?

. htaccess-процесс

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

Разрешение папки для папок webroot темы и css равно 755.

Вот некоторые ресурсы, которые я использовал без удачи.

Http://book.cakephp.org/2.0/en/views/themes.html

Ресурсы темы CakePHP возвращают ошибку

Не удалось получить файлы css и изображений в папке webroot тем cakephp

Https://groups.google.com/forum /#!тема/торт-php/xaraugmonsc

Тема CakePHP 2.x не работает

Https://groups.google.com/forum /#!тема/торт-php/siyvwchub1g

ОБНОВЛЕНИЕ: использование $this->Html->image('image.jpg') правильно отображает определенное изображение, расположенное по адресу View/Themed/Default/webroot/img/image.jpg. Однако, используя $this->Html->css('style'), пытается извлечь таблицу стилей из app/webroot/css/style.css, а не из app/View/Themed/Default/webroot/css/style.css. Мне также пришлось изменить название темы и имя папки моей темы обратно на "По умолчанию" с прописной буквой D, чтобы изображение было правильно связано. Таблица стилей по-прежнему не имеет правильной связи. Если я перейду непосредственно к таблице стилей темы в своем браузере, появится пустая страница. Если я перейду к таблице стилей, которой нет в моей папке тем затем я получаю правильное сообщение об ошибке. Однако при просмотре источника таблицы стилей моей темы (той, которая существует) отображается пустая страница.

Author: Community, 2013-08-14

4 answers

CakePHP использует соглашение о верблюжьем корпусе. Попробуйте изменить название своей темы, например. default до Default. Это случилось и со мной тоже.

Моя тема называлась megaecia, и ни сообщения об ошибке, ни журнала ничего (потому что я был Windows, в unix этого не происходит), затем я сменил на Megaecia, и все работает успешно.

Надеюсь, я помог.

 4
Author: Gabriel Carvalho, 2014-12-25 19:46:23

Хорошо, возможно, это очевидно...но моя таблица стилей использует функции, которые я создал в пользовательском помощнике. Когда таблица стилей расположена в app/webroot/css, проблем нет, но когда таблица стилей расположена в app/View/Themed/Default/webroot/css, она не может отображаться должным образом и, следовательно, содержит ссылки на несуществующую таблицу стилей, которая должна находиться в app/webroot/css. Я удалил помощников из таблицы стилей моей темы, и теперь все работает.

Я также изменил название темы с "по умолчанию" на "По умолчанию", чтобы изображения для правильного отображения с использованием $this->Html->image (и, предположительно, также файлов таблиц стилей и JS), даже если файлы представления были правильно связаны независимо от заглавной буквы.

 1
Author: bowlerae, 2014-01-14 20:53:22

Файлы ресурсов темы должны быть помещены в папку app/webroot/theme следующим образом:

app/webroot/theme/default/css
app/webroot/theme/default/js
app/webroot/theme/default/img
. . .

Где default - название темы, начинающееся со строчной буквы. Имя папки theme жестко задано. Обратите внимание, что суффикса -ed нет.

Тематические макеты должны быть помещены в папку app/View/Themed/Default/Layouts. Название темы должно соответствовать правилу camelCase, как ответил Габриэль Оук. На самом деле у меня была проблема, когда на linux-машине CakePHP не смог найти мой макет, потому что я назвал свою папку темы в нижнем регистре, как app/View/Themed/default/Layouts.

И еще одно: в теме контроллера также следует указывать строчные буквы: $this->theme = 'default';. Это влияет на поиск активов, так как мы разместили наши активы в папке со строчными буквами app/webroot/theme/default.

 0
Author: Serge S., 2014-04-07 19:55:58

Если вы пытаетесь получить доступ к ресурсу CSS из подкаталога веб-корня вашей темы, обязательно добавьте / в начале.

Т.е.

$this->Html->css('/plugins/bespoke.css'); 

Это вызовет CSS из каталога тем.

Если вы не добавили / в начале, cake не будет искать папку темы, вместо этого он попытается загрузить CSS из каталога webroot вашего приложения по умолчанию

 0
Author: loggyz, 2014-12-10 08:35:12