Closed ghost closed 7 years ago
Не совсем понял проблему. Можешь подробнее объяснить?
Да мне проще пул сделать - сегодня сделаю.
спустя две недели.... 🥇
@aios а с этим у нас что?
@Butochnikov я даже нашел эту проблему
button.dropzone({
url: this.url,
method: 'POST',
uploadMultiple: false,
previewsContainer: false,
dictDefaultMessage: '',
headers: {
'X-CSRF-TOKEN': window.Admin.Settings.token
},
sending () {
self.closeAlert()
},
success (file, response) {
self.value = response.value;
},
error (file, response) {
if(_.isArray(response.errors)) {
self.$set('errors', response.errors);
}
}
});
Дроп зона инстанциируется с дефолтным файловым параметром под именем file причем @{{$name}}
передается в сам компонент и вау - он вот в этом моменте теряется.
Причем наблюдается это и в компонентах file, images, image
Самое интересное что роут зарегистрированный под это счастье действительно считает что это верно
Но давайте отклонимся от задачи делать это в админке потому что админка не поддерживает S3 и добавим на элемент images, image, file свой view - переделаем в нем роут и укажем свой контроллер. Вот тут у нас и начинается котовасия - потому что нам нужно будет создавать кастомные вью для каждой энтити у которой загрузка файла.
Если @butschster объяснит зачем кроется такая логика то вполне реально что я пойму что я дурачок и закрою иссуй - пока я как бы и сделать что то хочу с этим - и боюсь одновременно.
@butschster Паш ну отпишись то что думаешь по этому поводу?
@aios Я если честно так и не понял проблемы, задачи и т.д. Dropzone только загружает файл на сервер и отдает обратно ссылку на файл, которая попадает в элемент формы. Т.е. само поле ничего не загружает, а только сохраняет ссылку на файл в БД.
@butschster верно - но у меня кастом контроллер и кастом обработка которая может отдать вообще json а не урлу файла. что предлагаешь сделать тут?
Вешать кастомные параметры в админке что бы определить что загрузка приходит из админки - как то глупо. Вот просто представь что есть один контроллер загрузки на всю ивановскую. че делать?)
Мне кажется тут нужны методы для установки параметра который приходит в ответе. так же нужны указания роута куда можно отправлять файлы ну и собственно повесить это на каждый элемент админки который отвечает за загрузку файлов.
@aios ты так со мной общаешься, как будто я в курсе того, что ты решил сделать. Пока что я понял, что тебе не нравится что имя file
. Вообще все это работает через vuejs и врядли это подойдет для твоих задач, проще написать свой JS со своими заморочками
Ладно, я понял вообщем начал работу. Постараюсь сегодня залить.
с загрузкой файлов тема важная. @aios предлагаю тебе написать, что ты хочешь получить в итоге и как, и желательно с кодом, а то так трудно понять. а не хотелось бы закрывать не разобравшись. Если это упрется в то, что это не возможно сделать, то это к той теме, что нужен отдельный элемент который будет работать через storage.
Элемент не нужен - нужен общий метод.. который будет выбирать драйвер. всего то делов. Я хочу унифицировать все элементы что бы можно было на каждый задать параметры загрузки файлов. Нужно расширить количество параметров - и подогнать под выдачу не текстового url картинки - а json с возможностью указать какой именно элемент в json будет отвечать за url в идеале даже с доп логикой ибо вернуться может вообще всякое всякое Давно. Добавить возможность указать роут куда складывать картинки- по сути это может быть кастомный контроллер - кастомный хендлер админки - кастомное что угодно. Так же нужно предусмотреть обработку бакета что бы указывать path-key и возвращать их урлы. Возможно контроллер будет принимать модель на входе что бы прицепить картинку сразу и вернуть отношение там или хз. По сути сейчас очень много проблем с этой заливкой очень... мне пришлось пройти реально огонь и воду что бы заставить все элементы админки складировать фотки туда куда мне нужно. А многим из обывателей это тупо не под силу.
То есть работу с драйверами не только на S3. завтра кто то захочет на GCS, RackSpace, HisOwnFavoriteDriver который он же и опишет. Это все админка должна предусматривать в стиле ->setDriver('s3')
Элемент же должен понимать что на выходе его ждет - и вытаскивать нужную ему инфу для отображения картинки, дока, гифки и тд.
Это моя субъективная позиция. @Butochnikov
Не совсем понимаю с чем у тебя возникли сложности, но вот тот контроллер, через который происходит загрузка файлов. https://github.com/LaravelRUS/SleepingOwlAdmin/blob/development/src/Http/Controllers/UploadController.php#L65 Ну и за сам процесс загрузки файла отвечает само поле https://github.com/LaravelRUS/SleepingOwlAdmin/blob/development/src/Form/Element/File.php#L224
Т.е. добавить поддержку сторонних хранилищ не должно занять много времени и сил.
Проблема в параметре предзагрузки файла. Он не устанавливается в dropzone.js в файле в сабжекте - ни через AdminFormElement::file('image') ни через ->setName('images');
Так и остается file