Стоит передо мной задача - загрузить несколько картинок для новости. В поисках решения нашел в cookbook статью (http://www.yiiframework.com/doc/cookbook/29/) и топик на форуме (http://www.yiiframework.com/forum/index.php/topic,1872.0.html).
И то и то меня не устраивает - во-первых я не храню ссылки на фотки в отдельной таблице (хотя может и надо, но это второй вопрос). Во-вторых, раз в yii есть уже классы для загрузки фоток, почему бы их не заюзать.
Покопавшись в системе обнаружил следующее:
Имеем контроллер AdminNews с переменной image. Во вьюхе подключаем виджет
Использую имя AdminNews[image] для соответствия переменной в контроллере. И собственно обрабатываю это с помощью CUploadedFile.
Естественно ничего не работает. Причина в этой строчке
Поскольку загружаем несколько файлов, то переменная $_FILES содержит ключи вида AdminNews[image][0], и в CUploadedFile в переменной $files ключи такие же, а вот переменная $name - AdminNews[image]. Вот и получается что CUploadedFile возвращает null.
Первое решение которое приходит в голову следующее:
пишем функцию поиска ключа в массиве с помощью регулярки
и меняем строчку
на
Теперь при загрузке нескольких файлов CUploadedFile вернет нам массив из файлов. Ну а в контроллере можно использовать следующий код
Я знаю что изобретаю велосипед, и что можно было просто сделать
Но хочется покрасивее
Может у кого-то есть другой вариант или поправки к моему?