Closed chmig29fulcrum closed 9 years ago
@chmig29fulcrum Проверьте версию фреймворка и убедитесь, что сделали все необходимые требования по обновлению фреймворка: https://github.com/yiisoft/yii2/blob/master/framework/UPGRADE.md
Возможно связано с этим, а может быть и временная ошибка самого репозитория packagist.org.
Попробуйте установить с нуля фреймворк и модуль.
@rdeanar Со второго раза встало как положено, видать проблемы были с сетью. Далее по мануалу читаю - надо провести какуюто миграцию.
Then run migrations
./yii migrate/up --migrationPath=@deanar/fileProcessor/migrations
При попытке ввести данную команду ругается
D:\Work\XAMPP\htdocs\a1.com>./yii migrate/up --migrationPath=@deanar/fileProcesso
r/migrations
'.' is not recognized as an internal or external command,
operable program or batch file.
Я наверно чтото нетак делаю ?
@rdeanar Надо было php вначале приписать. Протупил, извините. Вобщем провел миграцию успешно
Yii Migration Tool (based on Yii v2.0.2)
Total 2 new migrations to be applied:
m140516_113603_create_file_storage_table
m150111_173823_add_index
Apply the above migrations? (yes|no) [no]:y
*** applying m140516_113603_create_file_storage_table
> create table {{%fp_uploads}} ... done (time: 1.327s)
*** applied m140516_113603_create_file_storage_table (time: 1.503s)
*** applying m150111_173823_add_index
> create index type_type_id on {{%fp_uploads}} (type,type_id) ... done (time
: 0.645s)
> create index type_hash on {{%fp_uploads}} (type,hash) ... done (time: 0.16
3s)
*** applied m150111_173823_add_index (time: 0.852s)
Migrated up successfully.
буду дальше разбираться.
Обращаю внимание, что необходимо, чтобы конфиг БД консольного приложения был настроен на ту-же базу, что и обычное веб-приложение.
Да, с этим все впорядке, обнаружил в БД приложения новую табличку fp_uploads. Значит все пока идет по плану :)
кажется в Вашем file_processor_variations.php пару синтаксических ошибок нехватает запятых после вот этих двух строк
.........
'_insert' => ['app\models\Project' => 'avatar']
.........
'_default' => [ ]
@chmig29fulcrum Спасибо, поправил.
В Usage, в adding widget code to view: в обоих мулти и сингл после строки
'class' => 'additional-class'
добавте запятую пожалуйста.
Вставил код в вид Загрузил и вижу перед кнопкой user PIC
*/ ?>
и после тоже еще раз
*/ ?>
Может это потому что у вас виджет описан так
<?= \deanar\fileProcessor\widgets\SingleUploadWidget::widget([
я проверил и например у vova07 виджет прописан вот так
echo $form->field($model, 'preview_url')->widget(
Может в этом дело ?
Плюс виджет добавляет кнопку "upload" которая мне не нужна, так как я данный виджет использую в форме, которая сама по себе имеет кнопку "добавить целиком форму". Как этот upload можно убрать ?
Не имеет значения как подключен виджет. Что-то я не могу сообразить как там такое может появляться, можно скриншот посмотреть?
Кнопка Upload должна быть, т.к. файлы отправляются независимо от формы. Загрузка файлов может быть реализована вообще без основной формы.
Вы же хотели организовать вариант с userpic + crop (это single upload widget), там кнопки загрузки нет, загружается изображение сразу после выбора области в кропалке в модальном окне.
Я пошел по пути single upload widget, Вы правы мне нужен userpic+crop. Но как видите внизу еще добавляется кнопка Upload.
А у меня задумка следующая. Форма в которой юзер заполняет разные поля. Далее с помощью userpic+crop он закачает в temp папку 1 фотку, далее я какнить скриптом организую ему автоматом еще один userpic и так далее, дав возможность по очереди загрузить в temp папку допустим 10 картинок. Загружаться будут как оригиналы так и их различные кропы.
Далее закончив, юзер заполнят анкету, нажимает кнопку Add
и срабатывает механизм добавления формы. И вот там я пропишу перенос всех фоток из temp папки в уже реальную папку и добавлением всех данных с полей формы включая адреса фоток в табличку в БД.
Вот такой план максимум :)
Вы чтото изменили?
Попробуйте сейчас обновиться. Не знаю почему, но кажется вылез текст из php комментария во вьюшке виджета.
По поводу задумки: А почему бы не использовать мультиаплоад? Там конечно нельзя выбрать конкретную область, но настроить, чтобы делались миниатюры можно.
В темповую папку у меня ничего не складывается, а сразу все в единую папку загрузок.
Загрузиться оригинал и его кропы не получится. Загружается кропнутый оригинал, а уже из него делаются вариации.
Адреса фоток тоже не надо переносить в табличку БД, они хранятся в своей и связываюстя с необходимой моделью по ее идентификатору и придуманному типу.
Если вам нужна именно такая структура, как вы написали, то тогда, лучше писать индивидуально. Но мне кажется можно сделать проще с уже имеющимися наработками.
Да я думаю уже существующий Ваш виджет легче будет использовать, просто надо будет попробовать его переделать под себя. По поводу мультиаполада, каждая картинка должна быть индивидуально кропнута юзером, и ее миниатюра должна потом оставаться на страничке. Потому заставляю юзера добавить по одной картинке, чтоб последовательно их одну за другой добавил и кропнул так как ему будет удобней.
А почему нельзя загрузить до кропа сам оригинал? и плюсануть потом еще кропнутую версию ? Константин ведь вроде писал что если сделать вот так:
$('#uploader').fileapi({
url: './ctrl.php',
autoUpload: true,
accept: 'image/*',
imageTransform: {
cropped: {}
},
onSelect: function (evt, data) {
$(this).fileapi("crop", data.files[0], { x: 0, y: 0, w: 100, h: 100 });
}
});
то грузанется и оригинал и кропнутая.
Я думаю что файлы лучше разбить по папкам. Одна папка ведь не выдержит наплыва кучи картинок? Я пытаюсь социальную сеть попробовать сделать, и представте если там несколько лимонов фоток накопится, папка наверно по швам треснет :)
Моя логика это у каждого юзера своя temp папка в которую грузится все что угодно, и раз в сутки она зачищается кроном. А если юзер нажмет таки кнопку Add формы, то это будет означать что он осознанно добавил фотки и они тогда будут перекинуты в отдельную папку закрепленную за юзером.
Вобщем пока вот такие мысли, как начну осуществлять то там видно будет. Сейчас для меня пока только важно получить и оригинал картинку и кропнутый вариант. Боюсь без этого все теряет свой смысл.
А почему нельзя загрузить до кропа сам оригинал? и плюсануть потом еще кропнутую версию?
Если это и можно через fileapi сделать, то мой модуль не поддерживает это. Собственно загрузится 2 картинки последовательно и будут совершенно отдельными картинками. Необходимо разбираться в каком виде плагин отправляет эти 2 файла.
Вам можно сделать загрузку обычную и реализовать, чтобы потом пользователь мог кропнуть картинку так, как ему надо.
Я думаю что файлы лучше разбить по папкам.
У меня на каждый тип загружаемого контента своя подпапка.
тогда будут перекинуты в отдельную папку закрепленную за юзером
Можно так-же по крону проходиться и чистить неиспользуемые файлы в бд и фс. Подходы могут быть разные, кому как удобнее.
По поводу */ ?>
знаков Обновился и изчез только один знак который был после виджета. Но знак который был До виджета все еще не изчез.
Еще такой момент, попробовал открыть большую картинку, картинка открывается не уменьшаясь и выходит за размеры диалогового окна кропа тем самым портя дизайн.
По поводу мультиаплоуда... А можно реализовать мультиаплоад по принципу нажатия кнопки Add а не drag & drop-а ? И чтоб как в примере FileAPI после подкачки превьюшки имиджи можно былобы крутить+ удалять ненужные ?
@chmig29fulcrum Сделал модальное окно большего размера, у меня это помогло. Попробуйте.
Еще переделал темплейт сингл аплоада, возможно поможет с появлением символов */ ?>
. А вообще, мне кажется, это что-то с настройками php не то (в частности с настройкой php тегов), потому что очень странно что что-то вылезает.
В мультиаплоаде так и сделано, можно драг-н-дропом, а можно через кнопку Add, после чего можно вращать изображения перед загрузкой.
Да но как запустить вариант с кнопкой Add? По вашей инструкции надо зупаскать либо сингл либо мульти. Сингл это UserPIC+crop, а в варианте мульти запускается Drag & Drop.
В мультиаплоаде присутствует и кнопка добавить и драг-н-дроп вместе.
Сейчас я передалал, убрал отдельную область драг-н-дропа, сделал ее во весь виджет. Кнопка Добавить должна быть под очередью файлов.
@rdeanar я пытался у константина спросить но видать вопрос слишком банальный, может вы не поленитесь ответить.... Вобщем пробую поэтапно все сделать. Хотел попробовать просто JqueryFileAPI прикрутить напрямую к моему проэкту без Вашей надстройки. Так сказать, вручную без лишних загогулин.
Так вот. Скачал файлы, закинул их в web/js/FileAPI чтоб не возится с доступом и прочим. Тоесть их легко прикреплять куда надо. Далее в инструкции было подключение файлов
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script>
window.FileAPI = {
debug: false // debug mode
, staticPath: '/js/jquery.fileapi/FileAPI/' // path to *.swf
};
</script>
<script src="/js/jquery.fileapi/FileAPI/FileAPI.min.js"></script>
<script src="/js/jquery.fileapi/FileAPI/FileAPI.exif.js"></script>
<script src="/js/jquery.fileapi/jquery.fileapi.min.js"></script>
и код.
<div id="uploader">
<div class="js-fileapi-wrapper">
<input type="file" name="files[]" />
</div>
<div data-fileapi="active.show" class="progress">
<div data-fileapi="progress" class="progress__bar"></div>
</div>
</div>
<script>
jQuery(function ($){
$('#uploader').fileapi({
url: './ctrl.php',
autoUpload: true,
accept: 'image/*',
multiple: true,
maxSize: FileAPI.MB*10 // max file size
});
});
</script>
Я поступил следующим образом. Сварганил asset куда прописал путь к
<script src="/js/jquery.fileapi/FileAPI/FileAPI.min.js"></script>
<script src="/js/jquery.fileapi/FileAPI/FileAPI.exif.js"></script>
<script src="/js/jquery.fileapi/jquery.fileapi.min.js"></script>
Далее подключил asset к custom layout, который подключил в контроллере к нужному экшену. Html закинул в view ну а JS
<script>
window.FileAPI = {
debug: false // debug mode
, staticPath: '/js/jquery.fileapi/FileAPI/' // path to *.swf
};
</script>
<script>
jQuery(function ($){
$('#uploader').fileapi({
url: './ctrl.php',
autoUpload: true,
accept: 'image/*',
multiple: true,
maxSize: FileAPI.MB*10 // max file size
});
});
</script>
закинул в JS файл который я прикрепляю непосредственно к view. В итоге те 3 файла в хедере подключаются. Видно через дебаг. Jquery итак у yii есть. сам JS проверил повесив на #uploader alert, и он работает.
Но проблема в том ни стилей ни кропа запуска нет. Тоесть стандарттная html-овская кнопка browse, жмешь выбираешь файл и все.
Ято добавил потом css вручную, но правильно ли так делать ? и если так то значит и jcrop надо самому както добавлять ?
Или JqueryFileAPI это просто надстройка над самим FileAPI который надо еще отдельно инсталировать ?
@chmig29fulcrum, все верно, jquery.fileapi это плагин для jquery, который использует FileAPI.
Чтобы заработал кроп, нужно, во-первых, подключить соответствующий js файл, во-вторых, настроить его в конфиге плагина. У вас же представлен конфиг плагина в самом примитивном виде. + к этому нужен плагин для реализации модального окна.
Чтобы появились стили, их тоже нужно подключить к странице, лучше это делать через тот-же asset.
Рекомендую посмотреть на исходный код страницы с демонстрацией плагина, я сам разбирался по нему: http://rubaxa.github.io/jquery.fileapi/
Обращаю внимание, что в yii2 по умолчанию в layout уже подключены плагины от bootstrap, в их числе есть jquery.modal, но другая реализация, подключить их 2 одновременно невозможно, поэтому либо не использовать layout с bootstrap, либо использовать плагин не так, как в примере. Можно посмотреть у меня в коде, либо в документации bootstrap.
Ок спасибо, буду дерзать :)
@rdeanar Добрый день! пытаюсь установить файлы через composer. Идет установка и под конец когда делается updating dependencies выходит вот такое сообщение:
./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) The "http://packagist.org/p/yiisoft/yii2-bootstrap$e0b3a1214088a57b0f736ff529ac5 868a5b3fac73ecca1894ab308bc41b21c21.json" file could not be downloaded: failed t o open stream: HTTP request failed! http://packagist.org could not be fully loaded, package information was loaded f rom the local cache and may be out of date