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

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

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

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

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

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

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее

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

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

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

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

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

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

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

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

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее

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

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

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

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

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

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

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

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

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

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

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

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

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее

Фреймворк YII2: теория и первая практика

Овладейте азами фреймворка Yii2 за 5 дней!

Получить

Метки:

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

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

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Я не робот.

Spam Protection by WP-SpamFree