Yii: Вставка изображений в визуальном редакторе TinyMCE в шаблоне письма рассылки, чтобы был абсолютным URL путь.
При создании письма, которое будет разослано по email многим подписчикам, нужно у вставленных картинок указывать абсолютный путь к изображению на вашем сервере. Также необходимо обеспечить загрузку этих изображений в папку на сервере (если нет папки, то пусть она автоматически будет создаваться). Будем использовать расширение EAjaxUpload. В функции загрузки нашего изображения вызовем метод createDirectory(...) - который проверяет, есть ли на сервере папка 'uploads' (или какую указываете в переменной $folder), и если её нет, то создаёт её.
...
Yii::import("ext.EAjaxUpload.qqFileUploader");
$folder = 'files'.DIRECTORY_SEPARATOR.'uploads'.DIRECTORY_SEPARATOR;
$this->createDirectory($_SERVER['DOCUMENT_ROOT'].Yii::app()->urlManager->baseUrl.DIRECTORY_SEPARATOR.$folder);
...
Саму же createDirectory поместим в protected/components/Controller.php
public function createDirectory($path) {
if (file_exists($path)) {
//echo "The directory {$path} exists";
} else {
mkdir($path, 0775);
//echo "The directory {$path} was successfully created.";
}
}
Теперь осталось в настройках protected/components/TinyMceWidget.php в onComplete приписать к пути - Yii::app()->getBaseUrl(true), чтобы в редактор вставлялся абсолютный ауть к изображению, загруженному на сервер:
<?php
class TinyMceWidget extends CInputWidget
{
public $editorOptions = array();
public $model;
public $attribute;
public $uploadOptions = array();
public function getUploadConfig($id)
{
return array(
'action'=> Yii::app()->createUrl('site/upload'),
'allowedExtensions'=>array(),//array("jpg","jpeg","gif","exe","mov" and etc...
'sizeLimit'=>8*1024*1024,// maximum file size in bytes
'onComplete'=>"js:function(id, fileName, responseJSON){ if (responseJSON.image) { $('#" . $id . "').tinymce().execCommand('mceInsertContent',false,'<img src=\"". Yii::app()->getBaseUrl(true) ."/files/uploads/' + responseJSON.filename + '\"/>'); } else { $('#" . $id . "').tinymce().execCommand('mceInsertContent',false,'<a href=\"". Yii::app()->getBaseUrl(true) ."/files/uploads/' + responseJSON.filename + '\">' + responseJSON.filename + '<a/>'); } }",
'messages'=>array(
'typeError'=>"{file} has invalid extension. Only {extensions} are allowed.",
'sizeError'=>"{file} is too large, maximum file size is {sizeLimit}.",
'minSizeError'=>"{file} is too small, minimum file size is {minSizeLimit}.",
'emptyError'=>"{file} is empty, please select files again without it.",
'onLeave'=>"The files are being uploaded, if you leave now the upload will be cancelled."
),
'showMessage'=>"js:function(message){ alert(message); }"
);
}
...
almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.
Вы можете почитать все статьи от almix'а.
- 14 Разработка приложения на Yii. Урок 14: Выводим список категорий как новый виджет на сайте (29.04.2015)
- 13 Разработка приложения на Yii. Урок 13: Внедряем категории для статей. (29.04.2015)
- 12 Разработка приложения на Yii. Урок 12: Профилирование приложения, включаем кеширование. (20.01.2015)
- 11 Yiico. Видеокурс по разработке сайта на Yii. Урок 11: Отладка приложения, включаем журналирование. (20.01.2015)
- 10 Yiico. Видеокурс по разработке сайта на Yii. Урок 10: Если ваше приложение находится не в корневой папке, а во вложенной. (19.10.2014)
- 9 Разработка сайта на Yii с нуля. Урок 9. Выборка статей определённого автора. (13.08.2014)
- 8 Разработка сайта на Yii с нуля. Урок 8. Вызов в моделях функции, общей для них. Как избегать дублирования кода? (25.07.2014)
- 7 Разработка сайта на Yii с нуля. Урок 7. Изменение количества выводимых записей на странице в CGridView. Включаем сессии Yii. (04.09.2013)
- 6 Разработка сайта на Yii с нуля. Урок 6. Автоматич. отправка оповещений об одобренных комментариях на email автора комментария (11.08.2013)
- 5 Разработка сайта на Yii с нуля. Урок 5. Переименовываем blog в yiico. Изменяем "Home" в breadcrumbs. Включаем Gzip-сжатие. (09.08.2013)
- 4 Курс по Yii с нуля. Урок 4. Дорабатываем простую работу с пользователями: хранение пароля при редактировании пользователя. (13.04.2013)
- 3 Курс по Yii с нуля. Урок 3. Создаём новых пользователей. Организуем простую систему авторизации. Аутентификация, пароли, соли. (20.07.2014)
- 2 Yii + Git (github) на Mac. (24.03.2013)
- 2 Курс по Yii с нуля. Урок 2. Переносим и настраиваем Yii и проект нашего сайта на рабочем сервере. Избавляемся от index.php в url (09.07.2014)
- 1 Курс по Yii с нуля. Урок 1. Устанавливаем Yii на локальном компьютере. Заводим проект будущего сайта. (10.03.2013)
- 0 Composer – пакетный менеджер PHP. Что и как? (22.07.2014)
- 0 MySQL: проверить содержится ли значение в поле столбца (в столбце хранится строка значений через запятую) (22.05.2014)
- 0 Yii: Статичные страницы (создание, редактирование, удаление) (28.04.2014)
- 0 Yii: Расширение ECKEditor = Связка ckeditor + kcfinder (визуальный редактор с бесплатным файловым менеджером) (28.04.2014)
- 0 Yii: Bootstrap tabs, делаем активной вкладку на которую выполняется переход по ссылке (20.03.2014)
- 0 Yii: Доступ к атрибуту модели из файла шаблона (Вызов в шаблоне какого-либо атрибута модели). (17.02.2014)
- 0 Yii: Множественный автокомплит с помощью CJuiAutoComplete (автокомплит нескольких значений в одно поле) (07.02.2014)
- 0 Yii: Фотогалерея через поведение (доработка расширения imagesgallerymanager) (08.03.2016)
- 0 Yii: Установка и настройка Yii-app заготовки приложения от Crisu83 (09.03.2014)
- 0 Twitter Bootstrap Carousel Crossfade (09.09.2013)