我有一个laravel项目,这是分类网站,每个广告都应附上一些照片。我在db 1中制作了两个带有两个表的模型用于广告另一个用于pics,关系设置正确媒体表有外键ads_id Dropzonejs用于表单但是它指向来自MediaController的函数的URL广告的添加由AdvertController管理现在当我上传图片我不知道advert_id值时,问题出现在这两个独立的工作场所,但我无法想象如何让用户先保存广告,然后再上传图片。我不想在两页上分割表格,但不知道如何操纵用户做我需要的事情。
这是我管理dropzone的代码:
$('.dropzone-stuff').dropzone({
url: "{{ URL::to('upl') }}",
paramName: 'file',
autoProcessQueue: true,
maxFiles: 5,
addRemoveLinks: true,
clickable: true,
dictDefaultMessage: "{{ trans('custom.drop.dictDefaultMessage') }}",
dictFallbackMessage: "{{ trans('custom.drop.dictFallbackMessage') }}",
dictFallbackText: "{{ trans('custom.drop.dictFallbackText') }}",
dictInvalidFileType: "{{ trans('custom.drop.dictInvalidFileType') }}",
dictFileTooBig: "{{ trans('custom.drop.dictFileTooBig') }}",
dictCancelUpload: "{{ trans('custom.drop.dictCancelUpload') }}",
dictRemoveFile: "{{ trans('custom.drop.dictRemoveFile') }}",
dictMaxFilesExceeded: "{{ trans('custom.drop.dictMaxFilesExceeded') }}",
});
以下是在MediaController中管理上传的部分:
public function uploadImages()
{
if (Sentry::check()) {
$file = Input::file('file');
$advert_id = Advert::orderby('id', 'desc')->first()->id;
$destinationPath = public_path().'/uploads/'.Sentry::getUser()->username.'/';
$filename = str_random(6);
$extension =$file->getClientOriginalExtension();
$filename = $filename.'.'.$extension;
$upload_success = Input::file('file')->move($destinationPath, $filename);
if( $upload_success ) {
return Response::json('success', 200);
} else {
return Response::json('error', 400);
}
}
}
好吧,我认为在这里发布所有内容的代码太多了,但我只是告诉需要 - 我必须在上传之前使用广告ID将其用于媒体表中的advert_id列。
答案 0 :(得分:0)
我处理类似情况的方法是首先创建实体(广告),然后为您计划添加到其中的媒体设置第二页或步骤。由于该实体存在 - 并且可以发布到您上传媒体的下一页,您只需将其添加到您的脚本
myDropzone.on("sending", function(file, xhr, formData) {
formData.append('advert_id', <?php echo $advert_id; ?>);
});
然后在 upl 文件中,您可以将其关联。