У меня есть простой «пост» AR-класс/таблица. Его основано на «учебнике блога», поэтому оно служит той же цели. Я хочу, чтобы иметь возможность вставлять изображения в сообщения. Мой проект был следующим, и я не был полностью доволен этим, так что я буду рад за Ваш отзыв:Yii framework: лучший способ вставлять изображения в «сообщения»?
Дизайн предложение: Каталог защищены/данные/posts_files/{post_id} будет хранилище сообщения «ресурсы» (изображения в нашем случае, но могут быть любыми). Авторы сообщения должны помещать используемые изображения/файлы в нужное место (после создания сообщения, так как его идентификатор необходим). Мои потребности очень смиренны, поэтому с точки зрения удобства это нормально. Когда запрашивается сообщение с такими изображениями, CAssetManager будет вызван на помощь, чтобы «опубликовать()» каталог этого сообщения (например, protected/data/posts_files/17). В самих сообщениях (в их «содержании» или «телу», которые вы предпочитаете), изображения будут вставляться с тегами img, что атрибут src указывает на опубликованный каталог для этого post_id в папке с ресурсами (для например, после публикации определенной должности, WEBROOT/assets/d379e294/some_image.gif).
Проблема заключается в том, что при создании сообщений/отредактирован, я не знаю, какой путь CAssetManager будет создавать и возвращать - это, казалось бы, случайные строки текста (d379e294 в приведенном выше примере). Таким образом, мне нужно во время выполнения загрузки «post», чтобы обновить его контент в прямом эфире после публикации, с правильными URL-адресами в атрибуте «src» тегов img (или для любого другого вида ресурсов связанных в этой статье).
Это было немного сложно: сначала я отправился с переменной PHP в контент/тело сообщения и попытался каким-то образом интерполировать его при загрузке или непосредственно перед рендерингом сообщения. Мне не удалось. Я использовал PHP eval(), что очень плохая практика и опасно сама по себе, и она продолжала терпеть жалобы на другой контент в теле «пост». Я прибегнул к тому, чтобы в корпусе столбов была простая строчка для места - «ASSETS_URL» и str_replace() это при загрузке сообщения с опубликованным типом активов, который я «сейчас» имею под рукой (во время выполнения) ,
Я не уверен, что это лучший подход. эта строка владельца места может понадобиться в каком-то посте, и, кроме того, это похоже на базовый запуск шаблонов шаблонов, и моя интуиция говорит мне, что я что-то пропускаю, если я делаю простой шаблонный шаблон внутри рамки. Я просто могу указать на «правильную» альтернативу, альтернативу лучшей практики, сделать это в Yii. Я хотел попросить ваше мнение об этом - как по дизайну решения с более высокого уровня, так и по дизайну самой реализации. Не могли бы вы изменить ситуацию и сделать ее другой?
(Я не хотел погружаться в KcFinder, поэтому намеренно оставил его).
Thanks, Boaz.
Imho, кажется, что вся ваша проблема возникает из-за того, что вы используете CAssetManager. Какое преимущество это дает вам? И что именно вы имеете в виду, когда говорите: «Авторам сообщения нужно поместить использованные изображения/файлы в нужное место (после того, как сообщение создано, так как его идентификатор необходим).« Имеют ли авторы сообщения доступ к вашим каталогам? Это приложение внутри компании или что-то еще? –