Lamanvel Dropzonejs在hasmany表中进行文件验证

时间:2015-05-27 14:04:31

标签: php mysql laravel laravel-5

我有一个上传文件的laravel应用程序。如果文件存在,我需要检查相关表。我的用户模型hasmany(assets)文件信息位于assets表中。我试图将该名称从表中拉出来并根据dropzone中上传的文件进行验证。

这是我的dropzone脚本:

Dropzone.options.dropzoneUpload = {
paramName: "asset", // The name that will be used to transfer the file
maxFilesize: 2, // MB
accept: function(file, done) {
if (file.name == "{{$filename}}") {
  done("Naha, you don't.");
}
else { done(); }
}
};

我为上传页面生成视图的功能如下所示

public function index()
{
    $filename = Auth::user()->assets->name;
    return view('upload.index')->with('filename', $filename);
}

我在文件名变量

中的名称上返回了一个错误
Undefined property: Illuminate\Database\Eloquent\Collection::$name

我不知道如何从表中访问文件名并使用视图中的脚本进行验证。每个用户在表中都有多个文件名。

Pre dropzone我能够在我的控制器中使用它

foreach($userAssets as $asset)
        { 
            if($asset->name == $filename)
            { 
                return redirect('upload')->with('errornotice', 'A file with that name already exist');
            } 
        }

但这不会在剧本中发挥作用。

1 个答案:

答案 0 :(得分:0)

既然你自己说User有多个Assets,那么assets->name应该打印什么?其中name Asset?由于你有许多这些并且user->asset正在返回一个Collection,你可以迭代该集合,从所有Asset name中构造一个JSON数组并将其注入你的JS。然后执行JavaScript for / each以检查数组的所有元素。这是一个很弱的验证,任何用户都可以在提交之前编辑JS。如果文件名不存在对您来说很重要,请考虑某种服务器端验证。