2013-07-02 3 views
0

Я кодирую небольшой компонент новостей для веб-сайта с использованием cakephp. Идеальный способ, которым это будет работать, - позволить администратору ввести заголовок для новостного элемента, источника, ссылки на него (если есть), его содержимого (для резервного копирования) и сопроводительного изображения для него.Отображение изображения в Cakephp 2.3

Все работает, но изображение часть. Поскольку каждая запись имеет самое большее одно изображение, я сохраняю информацию об изображении в той же таблице базы данных. Я храню сообщения. До сих пор мне удалось загрузить файл изображения в приложение/uploads/и добавить его данные (имя, размер и тип) в базу данных.

Теперь я не могу показать это.

Все, что я успел сделать озираясь устанавливаются изображение, чтобы быть единственным содержанием страницы с помощью:

$this->response->file($url); 

Однако, мне нужно, чтобы иметь возможность показать это изображение в качестве встроенной части веб-сайт, так же, как показано большинство изображений в Интернете. Я смотрю вокруг и, похоже, не нахожу подходящих руководств для этого. Простейшее решение (ссылка на изображение, зная путь к папке с изображениями) также не будет работать, так как они находятся в приложении/uploads, что означает, что если я свяжусь с ним, то cakephp думает, что я вызываю класс 'uploads', который doesn ' t существует. Использование MOD_REWRITE может быть вариантом, но, честно говоря, мне кажется, что это будет скорее хак, так как должен быть способ взять сохраненный файл и выгрузить его как образ, чтобы он мог быть встроен в очень сайт, который его хранит.

Кто-нибудь знает об этом?

+0

размещение изображений в 'app/webroot/uploads' не является опцией? – Nunser

+0

Я думал об этом (помещая их вне папки с тортами), но это немного то же самое - у CakePHP должен быть способ сделать это, не прибегая к таким трюкам, и в идеале я бы хотел, чтобы все файлы имели отношение к торт в своей папке. Кстати, по приложению/независимо от того, что я имею в виду папку приложения, в которой запущена программа cakephp (то есть уже на веб-сервере), а не относительный адрес моего компьютера. – Tizzy

+0

'your-cake-folder/app/webroot/uploads' будет находиться внутри папки торта (' webroot' - это папка, в которой хранятся все файлы, которые должны быть доступны для общего доступа, например css и js), она соответствует тому, что вы просили , Я бы не советовал хранить изображения за пределами пирога по этому поводу. – Nunser

ответ

2

Для вещей, которые должны иметь открытый доступ для визуализации, например, файлы css или js ... или в этом случае изображения, простой вариант - поместить его в папку webroot.

Обычная структура, я с тортом, как

/app 
    /Config 
    .... 
    /webroot 
     /js 
     /cs 
     /users 
     /images 
     /docs 
     ...etc 

Попытка получить доступ к папке в приложении (например, app/uploads) вызовет проблемы с маршрутизацией контроллеров и представлений. Так что держать вещи внутри webroot. Специально, если это изображения, строго связанные с тортом.

Имейте в виду, что в webroot есть общедоступный доступ, поэтому не храните файлы там, к которым вы не хотите обращаться по URL-адресу.

+0

Еще раз спасибо!Это была очень маленькая вещь, но она делала мою голову. Не помогло, что в моих учебниках я не сказал, что где-нибудь :) – Tizzy

Смежные вопросы