Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Libraries > CakePHP - проблемы...


Автор: Ant88 22.12.2007, 10:43
Здравствуйте!

Есть такая проблема в CakePHP:

есть контроллер ImagesController, в нем экшен preview (вызывается по URL /images/preview/*.jpg)
примерно такой код:

Код

class ImagesController{
   var name = "Images";
   ...

   function preview(){
      $id = $this->params['pass'][0];
      $image = ... // здесь извлекается изображение из БД по ID
      $this->set('image', $image);
   }
  ...
}


Отображение для этого экшена такое:
Код

header('Content-Type: image/jpeg');
echo $image;


На одной из html страниц вызывается несколько картинок таким образом:
Код

<img src = "/images/preview/1.jpg" />
<img src = "/images/preview/2.jpg" />
<img src = "/images/preview/3.jpg" />


в итоге отображается только одна картинка. причем поведение в разных браузерах разное:
Firefox: отображется последняя вызванная картинка, при обновлении страницы уничтожаются переменные сессии.
IE-6: отображается первая вызванная картинка, при обновлении отображается только следующая вызванная картинка - если обновить после того как была отображена последняя вызванная картинка - уничтожаются переменные сессии.

При этом такое поведение только если в коде html вызываются разные ID - картинки. сделать например так:
Код

<img src = "/images/preview/2.jpg" />
<img src = "/images/preview/2.jpg" />
<img src = "/images/preview/2.jpg" />

то все работает нормально.

Вопрос: это моя ошибка где-либо в коде или это особенность CakePHP?
PS: прошу прощение за сумбурно сформулированный вопрос.

Автор: bawukr 18.1.2008, 02:01
Проверь пути к картинкам и их наличие... скорее всего что у тебя просто нет остальных картинок.. либо же они битые в БД..

Автор: Ant88 22.1.2008, 13:51
bawukr, спасибо за ответ.
Нет, картинки не битые. Просто сразу несколько их (взятых одним и тем же скриптом из БД) - на одной странице не отображаются. Любая из них, взятая в отдельности - отображается.
Пути тоже нормальные, пробовал и полностью урл скрипта прописывать - тот же результат. 
Ну и это не объясняет почему слетает сессия.
Бьюсь над вопросом до сих пор, решения нет пока никакого...

Автор: GeneralElectric 22.1.2008, 14:01
Наверняка что-то в сессии накосячено. и CakePHP тут не при чем.
Судя по всему, сессия переписывает id выводимой картинки. Другого объяснения нагадать я не могу.

Где результаты отладки? Где лог работы скрипта, выводящего картинки?

Автор: jctim 19.2.2008, 14:50
А не лучше ли в функцию передавать параметром $id ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)