Как обслуживать MVC-вид с путями к изображениям из каталога? - PullRequest
1 голос
/ 03 августа 2009

Я в некотором роде новичок во всей концепции MVC , поскольку я только недавно начал разработку веб-сайта с использованием фреймворка CakePHP . Поэтому я обращаюсь к вам и спрашиваю, как наилучшим образом добиться следующего.

Я хочу иметь возможность разместить несколько изображений в каталоге, который затем сканируется на наличие всех имен файлов в нем. Затем эти имена файлов должны быть переданы в произвольное представление, которое затем перебирает все имена файлов, делая из них img тегов.

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

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

  1. Создать модель с $useTable=false.
  2. Создайте обычный класс и импортируйте его как поставщика.

Что является лучшим способом для достижения того, что я описал выше?

Ответы [ 3 ]

1 голос
/ 03 августа 2009

Я думаю, что ваша оригинальная идея лучше, используйте Модель, чтобы пройти / прочитать / написать каталог. Думайте о структуре Файла как о вашем источнике данных. Вы можете передать dirname модели с помощью $ this-> data, а затем разрешить ей использовать File class для получения того, что вам нужно. Это сделало бы его переносимым между контроллерами (с loadModel () )

Позже, если вы переместите ваши пути к изображениям в БД, вам нужно только переписать модель, чтобы учесть это.

0 голосов
/ 03 августа 2009

Я бы создал помощник для этой цели.

Edit: и для обхода файловой системы используйте класс Folder из вашего помощника.

0 голосов
/ 03 августа 2009

Ранее я сделал следующее: создайте, например, класс ImageManager и передайте его как IImageManager в конструктор вашего, например, ImageController, вместо передачи в хранилище. Затем ImageManager может выполнить всю работу, которую вы упомянули.

РЕДАКТИРОВАТЬ: я сделал это в .net mvc, и у меня нет опыта CakePHP, но я думаю, что есть место, где вы можете зарегистрировать конкретную реализацию IImageManager в качестве ImageManager, чтобы инфраструктура знала, что передать конструктору контроллера

...