Yii2 изображения

Yii2 изображения

От автора: приветствую вас, друзья. Мы продолжаем цикл статей, посвященных знакомству с фреймворком Yii. Данная статья будет посвящена такой теме, как Yii2 изображения. Здесь мы посмотрим, как происходит загрузка и вывод загруженных изображений.

Итак, давайте затронем в данном цикле статей вопрос загрузки картинок. Операция, которая необходима практически на любом сайте: загрузка изображений товара в интернет-магазине или прикрепление картинки поста в блоге и т.д.

Сделать это на самом деле относительно просто. Нам нужно всего-то знать, что для работы с загруженным файлом необходимо обратиться к классу yii\web\UploadedFile, объект которого и содержит всю информацию о загруженном файле.

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

Фреймворк Yii2. Быстрый старт

Получите курс и узнайте, как с помощью фреймворка Yii2 разрабатывать веб-приложения на примере блога

Смотреть курс

Yii2 изображения

Как видим, в модели мы указали свойство $image, которое и будет отвечать за работу с загружаемым изображением. В методе rules использованы правила валидации для получаемого файла, которыми мы сообщаем, что во-первых, поле формы input должно быть корректным загружаемым файлом, а во-вторых, расширения этого файла должны быть png или jpg.

Ну и, наконец, у нас есть заготовка метода upload, который будет проверять, пройдена ли валидация, и пока что просто распечатывать на экран содержимое обеъекта.

Далее нам, конечно же, понадобится контроллер и представление. Давайте в классе SiteController создадим действие actionUpload, в котором и получим объект модели.

Yii2 изображения

В экшене мы создаем объект модели и в свойство $image сохраняем информацию о загруженном файле. Также мы вызываем метод upload() модели, который написали на предыдущем шаге. Теперь создадим несложный вид — upload.php и обратимся к искомой странице с формой (//yii2/site/upload):

Yii2 изображения

Обратите внимание! Мы используем последнюю версию фреймворка. До версии 2.0.8 для формы при загрузке файлов обязательно нужно было добавлять атрибут enctype со значением multipart/form-data, вот таким образом:

Фреймворк Yii2. Быстрый старт

Получите курс и узнайте, как с помощью фреймворка Yii2 разрабатывать веб-приложения на примере блога

Смотреть курс

Теперь этого делать не обязательно, Yii сам добавит необходимый атрибут, если в форме есть поля типа file.

Ну что же, давайте попробуем загрузить файл через созданную форму. Если мы нигде не ошиблись, тогда метод upload модели распечатает данные загруженного изображения.

Yii2 изображения

К слову, если это будет не картинка с разрешенными расширениями, тогда мы должны увидеть другую картину:

Yii2 изображения

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

Здесь мы использовали метод saveAs, который сохранит файл по указанному пути. Мы будем сохранять картинку в папку uploads (создайте эту папку в директории web).

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

Ну и представление. Давайте проверим наличие изображения и добавим его вывод перед формой:

В результате изображение должно быть загружено и успешно выведено сразу после сохранения в папку web\uploads.

Yii2 изображения

Как видим, загрузка и вывод изображений в Yii — достаточно простая вещь. Больше о фреймворке вы можете узнать из наших бесплатных или платных уроков. Также создание простейшего блога на Yii2 можно посмотреть в этом цикле уроков.

Фреймворк Yii2. Быстрый старт

Получите курс и узнайте, как с помощью фреймворка Yii2 разрабатывать веб-приложения на примере блога

Смотреть курс

Фреймворк YII2. Быстрый старт

Создание блога с использованием фреймворка Yii2!

Смотреть видео

Метки:

Похожие статьи:

Комментарии Вконтакте: